共用方式為


.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 資源檔中的所有項目擷取到記憶體中。

另請參閱