图 3. 将文件的 Build Action 设置为 Embedded Resource
这种嵌入资源的方法会使 Visual Studio .NET 为您创建一个备用资源名,其组成类似这样:
<defaultNamespace>.<folderName>.<fileName>
资源名称的默认命名空间部分是项目本身的默认命名空间,它是通过 Solution Explorer->(右键单击)->Properties->Common Properties->General->Default Namespace 来设置的。由于这是在生成新类时,新类得到的相同命名空间,所以这就使通过使用类型和部分资源名称来加载资源变得很方便。如果文件碰巧位于项目的子文件夹中,就需要在文件夹名称中包括子文件夹,并用点替换反斜杠。例如,一个名为 Azul.jpg 的位图位于项目根下面的 foo\bar 文件夹中,要加载它就需要这样做:
// If this code called within the ResourcesApp.Form1 class,
// and the file is \foo\bar\Azul.jpg,
// will load ResourcesApp.foo.bar.Azul.jpg
this.BackgroundImage =
new Bitmap(this.GetType(), "foo.bar.Azul.jpg");
返回页首
有类型资源
尽管文件有扩展名,但清单资源是在没有类型信息的情况下嵌入的。例如,如果 Azul.jpg 文件的名称实际上是 Azul.quux,这对于 Bitmap 类来说是没有差别的,因为这个类将通过查看数据本身来确定其类型(JPEG、PNG、GIF 等)。这就需要由您来将每个资源的类型正确映射为加载该资源所需的对象的类型。
但如果您愿意多走一步,则可以用一个类型来标记资源。.NET 框架支持用于资源的一组扩展元数据,其中包括两种格式的 MIME 类型信息,一个是文本格式,另一个是二进制格式。这两种格式都有内置的读取器,以便在运行时取得类型正确的资源。
基于文本的格式是特定于.NET 框架的 XML 格式,称为 ResX(.resx 文件)。不考虑其 XML 基础,该格式不是专门为人工阅读而设计的(XML 格式很少是这样的)。但是,Visual Studio .NET 仍然为 .resx 文件提供了一个基本编辑器。要将新的 .resx 文件添加到 Visual Studio .NET 项目中,请从 Project 菜单中选择 Add New Item,然后选择 Assembly Resource File 模板,如图 4 所示。
图 4. 将 .resx 文件添加到项目中
到写本文时为止,即使空的 .resx 文件也是 42 行 XML,而其中大多数是架构信息。架构允许 .resx 文件中有任意数目的项,每项都有名称、值、注释、类型和 MIME 类型。图 5 显示了有两个项的 .resx 文件,即名为 MyString 的字符串和名为 MyImage 的图像。
文章来源于领测软件测试网 https://www.ltesting.net/