Visual C# 應用程序中經常會包含非源代碼的數據。此類數據稱為“項目資源”,它可以包含應用程序所需的二進制數據、文本文件、音頻或視頻文件、字符串表、圖標、圖像、XML 文件或任何其他類型的數據。項目資源數據以 XML 格式存儲在 .resx 文件中(默認文件名為 Resources.resx),可在“解決方案資源管理器”中打開此文件。有關項目資源的更多信息,請參見使用資源文件。
可以將資源添加到項目中,方法是:在“解決方案資源管理器”中,在該項目下右擊“屬性”節點,單擊“打開”,再單擊“項目設計器”中“資源”頁上的“添加資源”按鈕。
可以將資源作為鏈接的資源(外部文件)或嵌入的資源(直接嵌入到 .resx 文件中)添加到項目中。
在添加鏈接的資源時,存儲項目資源信息的 .resx 文件僅包含指向磁盤上資源文件的相對路徑。如果將圖像、視頻或其他復雜文件作為鏈接的資源進行添加,則可以使用默認編輯器編輯它們,可在資源設計器中為文件類型設置關聯的默認編輯器。
當添加嵌入的資源時,數據直接存儲到項目的資源 (.resx) 文件中。字符串只能作為嵌入的資源進行存儲。
有關更多信息,請參見鏈接的資源與嵌入的資源和ContentContainer_cpe29192_c|ctl00_rs1_mainContentContainer_ctl07'',this);" tabindex="" href="http://msdn2.microsoft.com/zh-cn/library/ekyft91f.ASPx">.Resx 文件格式中的資源。
關聯用於編輯各個資源的默認應用程序之後,資源設計器就允許您在開發過程中添加和修改項目資源。右擊“解決方案資源管理器”中的“屬性”,然後單擊“打開”,再單擊項目設計器中的“資源”選項卡,可以訪問資源設計器。有關更多信息,請參見“項目設計器” ->“資源”頁。下面的圖示顯示了資源設計器菜單選項:
若要編輯嵌入的資源,必須直接處理 .resx 文件來操作每個字符或字節。這就是為什麼在開發過程中將復雜文件類型存儲為鏈接的資源更為方便的原因。可以使用
Javascript:Track(''ctl00_rs1_mainContentContainer_cpe29193_c|ctl00_rs1_mainContentContainer_ctl15'',this);" tabindex="" href="http://msdn2.microsoft.com/zh-cn/library/cb4x6esf.ASPx">二進制編輯器 以十六進制或 ASCII 格式在二進制級別上編輯資源文件(包括 .resx 文件)。可以使用 圖像編輯器 編輯作為鏈接的資源存儲的圖標、光標以及 .jpeg 和 GIF 文件。您還可以選擇使用其他應用程序作為這些文件類型的編輯器。有關更多信息,請參見在資源編輯器中查看和編輯資源。當您生成應用程序時,Visual Studio 會調用 resgen.exe 工具,將應用程序資源轉換為稱為 Resources 的內部類。此類包含在 Resources.Designer.cs 文件中,而該文件嵌套在“解決方案資源管理器”中的 Resources.resx 文件下。Resources 類將所有項目資源封裝到靜態只讀的 get 屬性中,作為在運行時提供強類型資源的方式。當通過 Visual C# IDE 進行生成時,所有封裝的資源數據(包括嵌入到 .resx 文件中的資源和鏈接的文件)都被直接編譯到應用程序程序集(.exe 或 .dll 文件)中。換句話說,Visual C# IDE 總是使用 /resource 編譯器選項。
如果從命令行進行生成,則可以指定 /linkresource 編譯器選項,以便將資源部署為主應用程序程序集之外的單獨文件。這是一種高級應用方案,僅在某些很少見的情況下才需要使用。將資源與主應用程序程序集分開部署的一種更為常見的方案是使用附屬程序集,如下所述。
若要在運行時訪問資源,只需像引用任何其他類成員一樣引用該資源即可。下面的示例顯示如何檢索名為 Image01 的位圖資源。請注意,資源類位於名為 <項目名稱>.PropertIEs 的命名空間中,因此,要麼每個資源都使用完全限定名,要麼在作為資源類訪問來源的源文件中添加適當的 using 指令。
System.Drawing.Bitmap bitmap1 = myProject.PropertIEs.Resources.Image01;
在內部,get 屬性使用 ResourceManager 類創建對象的新實例。
有關更多信息,請參見應用程序中的資源和script:Track(''ctl00_rs1_mainContentContainer_cpe29195_c|ctl00_rs1_mainContentContainer_ctl33'',this);" tabindex="" href="http://msdn2.microsoft.com/zh-cn/library/ccec7sz1.ASPx">資源文件生成器 (Resgen.exe)。
如果您正在創建需要本地化(翻譯)為多種語言的應用程序,可以將每組特定於區域性的字符串作為資源存儲在它本身的附屬程序集中。當您分發應用程序時,其中應包含主應用程序程序集和任何相應的附屬程序集。然後您可以在不重新編譯主應用程序程序集的情況下,添加其他附屬程序集或修改現有的附屬程序集。有關更多信息,請參見創建附屬程序集和定位和使用特定區域性的資源。