添加和编辑资源

Visual C# 应用程序中经常会包含非源代码的数据。此类数据称为“项目资源”,它可以包含应用程序所需的二进制数据、文本文件、音频或视频文件、字符串表、图标、图像、XML 文件或任何其他类型的数据。项目资源数据以 XML 格式存储在 .resx 文件中(默认文件名为 Resources.resx),可在“解决方案资源管理器”中打开此文件。有关项目资源的更多信息,请参见使用资源文件

向项目中添加资源

单击“项目”菜单中的“添加现有项”,或者单击“项目设计器”中“资源”页面上的“添加资源”按钮,可以向项目中添加资源。

可以将资源作为链接的资源(外部文件)或嵌入的资源(直接嵌入到 .resx 文件中)添加到项目中。

  • 在添加链接的资源时,存储项目资源信息的 .resx 文件仅包含磁盘上资源文件的相对路径。如果将图像、视频或其他复杂文件作为链接的资源进行添加,则可以使用默认编辑器(在资源设计器中将此默认编辑器与该文件类型关联)编辑它们。

  • 当添加嵌入的资源时,数据直接存储到项目的资源 (.resx) 文件中。字符串只能作为嵌入的资源进行存储。

有关更多信息,请参见链接的资源与嵌入的资源

编辑资源

关联用于编辑各个资源的默认应用程序之后,资源设计器就允许您在开发过程中添加和修改项目资源。右击“解决方案资源管理器”中的“属性”,然后单击“打开”,再单击“项目设计器”中的“资源”选项卡,即可访问资源设计器。有关更多信息,请参见“项目设计器” ->“资源”页。下面的图示显示了资源设计器菜单选项:

资源设计器菜单项

若要编辑嵌入的资源,必须直接处理 .resx 文件来操作每个字符或字节。这就是为什么在开发过程中将复杂文件类型存储为链接的资源更为方便的原因。可以使用二进制编辑器以十六进制或 ASCII 格式在二进制级别上修改资源文件(包括 .resx 文件)。可以使用图像编辑器修改作为链接的资源存储的图标、光标以及 .jpeg 和 GIF 文件。您还可以选择使用其他应用程序作为这些文件类型的编辑器。有关更多信息,请参见在资源编辑器中查看和编辑资源

备注

所有 Visual Studio 版本(速成版除外)都提供二进制编辑器和图像编辑器。

将资源编译为程序集

生成应用程序时,Visual Studio 会调用 resgen.exe 工具,将应用程序资源转换为名为 Resources 的内部类。此类包含在 Resources.Designer.cs 文件中,而该文件嵌套在解决方案资源管理器中的 Resources.resx 文件下。Resources 类将所有项目资源封装到静态只读的 get 属性中,作为在运行时提供强类型资源的方式。通过 Visual C# IDE 生成时,所有封装的资源数据(包括嵌入到 .resx 文件中的资源和链接的文件)都直接编译到应用程序程序集(.exe 或 .dll 文件)中。也就是说,Visual C# IDE 始终使用 /resource 编译器选项。如果在命令提示符下生成,则可以指定 /linkresource 编译器选项,这将使您可以将资源部署在主应用程序程序集之外的单独文件中。这是一种高级应用方案,仅在某些很少见的情况下才需要使用。将资源与主应用程序程序集分开部署的一种更常见的方案是使用附属程序集,如后面的一节所述。

在运行时访问资源

若要在运行时访问资源,请像引用任何其他类成员一样引用该资源。下面的示例显示如何检索名为 Image01 的位图资源。

System.Drawing.Bitmap bitmap1 = Properties.Resources.Image01;

在内部,get 属性使用 ResourceManager 类创建对象的新实例。

有关更多信息,请参见 资源文件生成器 (Resgen.exe)

附属程序集中的资源

如果您正在创建需要本地化(翻译)为多种语言的应用程序,可以将每组特定于区域性的字符串作为资源存储在它本身的附属程序集中。分发应用程序时,其中应包括主应用程序程序集和所有相应的附属程序集。然后,您就可以在不重新编译主应用程序程序集的情况下,添加附属程序集或修改现有的附属程序集。有关附属程序集的更多信息,请在 MSDN 上搜索“创建附属程序集”和“定位和使用特定区域性的资源”。

请参见

其他资源

使用 Visual C# 速成版 IDE