.NET 應用程式中的資源

幾乎每個實際執行品質應用程式都必須使用資源。 資源是任何使用應用程式以邏輯方式部署的非執行檔資料。 資源可能在應用程式中顯示作錯誤訊息,或做為使用者介面的一部分。 資源可以含有一些表單中的資料,包括字串、影像和永續性物件。 (若要將保留物件寫入資源檔,物件必須是可序列化的)。將資料儲存在資源檔中,可讓您不需要重新編譯整個應用程式即可變更資料。 也可讓您將資料儲存在單一位置,不需要依賴儲存在多個位置的硬式編碼資料。

.NET 提供建立和當地語系化資源的完整支援。 此外,.NET 也支援簡單的模型以封裝及部署當地語系化資源。

建立和當地語系化資源

在非當地語系化的應用程式中,您可以使用資源檔做為應用程式資料的存放庫,特別是針對原始程式碼中多個位置的硬式編碼字串。 大多數情況下,您建立的資源是文字 (.txt) 或 XML (.resx) 檔案,並且使用 Resgen.exe (資源檔產生器) 將它們編譯成二進位 .resources 檔。 然後這些檔案會由語言編譯器內嵌在應用程式的可執行檔。 如需有關建立資源檔的詳細資訊,請參閱建立資源檔

您也可以針對特定文化特性當地語系化應用程式的資源。 這可讓您建置應用程式的當地語系化 (轉譯) 版本。 當您開發使用當地語系化資源的應用程式時,如果沒有適當的資源可供使用,您會指定文化特性做為其資源使用的中性或後援文化特性。 一般而言,中性文化特性的資源是儲存在應用程式的可執行檔中。 個別當地語系化文化特性的其餘資源會儲存在獨立的附屬組件。 如需詳細資訊,請參閱建立附屬組件

封裝和部署資源

您在附屬組件中部署當地語系化應用程式資源。 附屬組件包含單一文化特性的資源。它不包含任何應用程式程式碼。 在附屬組件部署模型中,您會建立應用程式,具有一個預設組件 (通常是主要組件) 和應用程式支援之每個文化特性的一個附屬組件。 因為附屬組件不是主要組件的一部分,您可以輕鬆地取代或更新對應至特定文化特性的資源,而不需要取代應用程式的主要組件。

謹慎地決定哪些資源將組成應用程式的預設資源組件。 因為它是主要組件的一部分,它的任何變更需要您取代主要組件。 如果您未提供預設資源,當資源後援處理序嘗試尋找它時,將會擲回例外狀況。 在設計良好的應用程式中,使用資源應該永遠不會擲回例外狀況。

如需詳細資訊,請參閱封裝和部署資源文章。

擷取資源

在執行階段,應用程式會根據 CultureInfo.CurrentUICulture 屬性所指定的文化特性,針對每個執行緒載入適當的當地語系化資源。 這個屬性值被衍生,如下所示︰

如需如何設定目前 UI 文化特性的詳細資訊,請參閱 CultureInfoCultureInfo.CurrentUICulture 參考頁面。

然後,您可以使用 System.Resources.ResourceManager 類別,針對目前 UI 文化特性或特定文化特性擷取資源。 雖然 ResourceManager 類別最常用於擷取資源,System.Resources 命名空間包含您可以用來擷取資源的額外類型。 包括:

  • ResourceReader 類別,可讓您列舉內嵌在組件中,或儲存在獨立二進位 .resources 檔中的資源。 當您不知道資源在執行階段可用的確切名稱時,這個項目很有用。

  • ResXResourceReader 類別,可讓您從 XML (.resx) 檔擷取資源。

  • ResourceSet 類別,可讓您擷取特定文化特性的資源,而不需要觀察後援規則。 資源可以儲存在組件或獨立二進位 .resources 檔中。 您也可以開發 IResourceReader 實作,以使用 ResourceSet 類別從其他來源擷取資源。

  • ResXResourceSet 類別,可讓您將 XML 資源檔中的所有項目擷取至記憶體。

另請參閱