圖 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 的圖像。
文章來源于領測軟件測試網 http://www.kjueaiud.com/