如何:在编译时包含资源

通常,使用所有资源在一个资源脚本 (.rc) 文件中的默认安排既简单又方便。 然而,在编译时,可以通过在“资源包括”对话框中的“编译时指令”框列出其他文件中的资源,将这些资源添加到当前项目。

将资源放置在主 .rc 文件以外的文件中有若干原因:

  • 打算向在保存 .rc 文件时不会被删除的资源语句添加注释。

    资源编辑器不直接读取 .rc 或 resource.h 文件。 资源编译器将它们编译成由资源编辑器所使用的 .aps 文件。 该文件是一个编译步骤,只存储符号数据。 与普通编译过程一样,非符号信息(如注释)在编译过程中将被放弃。 每当 .aps 文件与 .rc 文件不同步时,就会重新生成 .rc 文件(例如,当您进行“保存”时,资源编辑器将覆盖 .rc 文件和 resource.h 文件)。 对资源本身所做的任何更改依然包含在 .rc 文件中,但一旦覆盖 .rc 文件就总会丢失注释。

  • 打算包含已开发和测试并且无需进一步修改的资源。 (任何被包含但不具有 .rc 扩展名的文件都无法由资源编辑器编辑。)

  • 打算包含正在由若干不同项目使用的资源或为源代码版本控制系统组成部分的资源,并且,这些资源因此必须存在于修改将影响所有项目的中心位置。

  • 打算包含自定义格式的资源(如 RCDATA 资源)。 RCDATA 资源可能有特殊要求。 例如,不能将表达式用作 nameID 字段的值。 有关更多信息,请参见 Windows SDK 文档。

如果现有 .rc 文件中有满足以上任一条件的节,则应将这些节放置到一个或多个单独的 .rc 文件中并使用“资源包括”对话框将其包含在项目中。 在新项目的 \res 子目录中创建的 Projectname.rc2 文件便是用于该目的。

在编译时将资源包含在项目中

  1. 将资源放置到具有唯一文件名的资源脚本文件中。 不要使用 projectname.rc,因为它是用于主资源脚本文件的文件名。

  2. (在资源视图中)右击 .rc 文件并从快捷菜单中选择“资源包括”。

  3. 在“编译时指令”框中添加 #include 编译器指令,以将新资源文件包含在开发环境的主资源文件中。

    以这种方式包含的文件中的资源在编译时成为可执行文件的一部分。 当处理项目的主 .rc 文件时,这些资源不能直接进行编辑或修改。 需要单独打开所包含的 .rc 文件。 资源编辑器不能编辑任何包含在其中的但不具有 .rc 扩展名的文件。

有关将资源添加到托管项目的信息,请参见“.NET Framework 开发员指南”中的应用程序中的资源。有关手动将资源文件添加到托管项目、访问资源、显示静态资源和将资源字符串分配给属性的信息,请参见演练:本地化 Windows 窗体演练:将本地化资源用于 ASP.NET

要求

Win32

请参见

参考

资源文件 (Visual Studio)

资源编辑器