共用方式為


資源檔產生器 (Resgen.exe)

資源檔產生器可以將 .txt 檔和 .resx (XML 架構資源格式) 檔轉換成 Common Language Runtime 二進位 .resources 檔,這種檔案可以被嵌入到執行階段二進位可執行檔或編譯成附屬組件。如需部署和擷取 .resources 檔的詳細資訊,請參閱應用程式中的資源

Resgen.exe 執行下列轉換動作:

  • 將 .txt 檔轉換成 .resources 或 .resx 檔。

  • 將 .resources 檔轉換成文字或 .resx 檔。

  • 將 .resx 檔轉換成文字或 .resources 檔。

resgen [parameters] [/compile]filename.extension [outputFilename.extension] [/str:lang[,namespace[,class[,file]]]]

參數

引數 描述

filename.extension

要轉換的輸出檔名稱。extension 必須是下列其中之一:

.txt

指定文字檔的副檔名以轉換成 .resources 或 .resx 檔。文字檔只能包含字串資源。

.resx

指定 XML 架構資源檔的副檔名以轉換成 .resources 或 .txt 檔。

.resources

指定資源檔的副檔名以轉換成 .resx 或 .txt 檔。

outputFilename.extension

要建立的資源檔名稱。

從 .txt 或 .resx 檔轉換時,這個引數是選擇性的。將文字或 .resx 檔轉換成 .resources 檔時,您可以指定 .resources 副檔名。如果沒有指定 outputFilename,Resgen.exe 會將 .resources 副檔名附加至輸出 filename 引數,並且將檔案寫入包含 filename 的目錄中。

從 .resources 檔轉換時,outputFilename 是強制的引數。在將 .resources 檔轉換成 XML 架構資源檔時指定 .resx 副檔名。在將 .resources 檔轉換成文字檔時指定 .txt 副檔名。當 .resources 檔只包含字串值時,您應只將 .resources 檔轉換成 .txt 檔。

選項 描述

/compile

可讓您指定在單一大量作業中將多個 .resources 檔案轉換成多個 .resx 或 .txt 檔案。如果您不指定這個選項,您只能指定一個輸入檔引數。

這個選項無法與 /str: 選項搭配使用。

/publicClass

建立強型別 (Strongly Typed) 資源類別做為公用類別。

如果沒有使用 /str: 選項,則會忽略這個選項。

/r: assembly

指定要從 assembly 載入的型別。如果您指定這個選項,則具有舊版型別的 .resx 檔案將會在 assembly 中使用此型別。

/str: language[,namespace[,classname[,filename]]]

以在 language 選項中所指定的程式設計語言 (cs 或 C# 代表 C#,vb 或 visualbasic 代表 Visual Basic),建立強型別資源類別檔。您可以使用 namespace 選項指定專案的預設命名空間 (Namespace),使用 classname 選項指定所產生類別的名稱,並使用 filename 選項指定類別檔的名稱。

使用 /str: 選項時只能指定一個輸入檔,因此這個選項無法與 /compile 選項搭配使用。

如果有指定 namespace 但未指定 classname,此時類別名稱便會衍生自該輸出檔名稱 (例如,以底線替代句號)。這樣一來,強型別資源可能無法正確運作。若要避免這項問題,請同時指定類別名稱和輸出檔名稱。

/usesourcepath

指定輸入檔的目前目錄是用來解析相對檔案路徑。

備註

Resgen.exe 藉由包裝以下四種類別所實作的方法來轉換檔案:

請注意 .NET Framework 應用程式無法直接使用由 ResXResourceWriter 類別建立的 .resx 檔。在將這個檔案加入您的應用程式之前,透過 Resgen.exe 執行它,以便將它轉換成 .resources 檔。如需在您程式碼中實作這些類別的詳細資訊,請參閱它們個別的參考主題。

為了要讓 Resgen.exe 能夠剖析您的輸入,.txt 和 .resx 檔遵守正確格式是關鍵要素。

文字檔只能包含字串資源。如果您所撰寫的應用程式必須將字串轉譯成多種語言,字串資源是非常有用的。例如,使用適當的字串資源,您可以輕易地按地區安排功能表字串。Resgen.exe 讀取含有名稱/值組的文字檔,其中名稱是描述資源的字串,而值是資源字串本身。您必須在個別行上指定每個名稱/值組,如下所示:

name=value

請注意,文字檔中允許使用空字串。例如:

EmptyString=

文字檔一定要以 UTF8 或 Unicode 編碼方式儲存,除非其只包含純羅馬字母,而不包含例如嘶音符 (Cedilla)、變母音 (Umlaut) 和波狀符號 (Tilde) 的變音符號。例如,Resgen.exe 會在處理沒有 UTF8 或 Unicode 編碼方式的文字檔時移除延伸的 ANSI 字元。

Resgen.exe 會針對重複的資源名稱檢查文字檔。如果文字檔包含重複的資源名稱,則 Resgen.exe 將會發出警告,並忽略重複的名稱。如需文字檔格式的詳細資訊,請參閱文字檔格式的資源

.resx 資源檔格式由 XML 項目組成。類似於 .txt 檔,您可以在這些 XML 項目內指定字串資源。.resx 檔高於 .txt 檔的主要優勢是您還可以指定或嵌入物件。在檢視 .resx 檔的時候,您可以實際看到內嵌物件 (如圖片) 的二進位格式 (當這個二進位資訊是資源資訊清單的一部分時)。就跟 .txt 檔一樣,您可以使用文字編輯器 (例如記事本或 Microsoft Word) 來開啟 .resx 檔,並撰寫、剖析和操作內容。請注意您必須對 XML 標記和 .resx 檔案結構有不錯的認識,才能這麼做。如需 .resx 檔格式的詳細資訊,請參閱 .Resx 檔格式的資源

若要建立含有內嵌非字串物件的 .resources 檔,您必須使用 Resgen.exe 來轉換含有物件的 .resx 檔,或使用 ResourceWriter 類別提供的方法,直接從程式碼中將物件資源加入您的檔案。如果使用 Resgen.exe 將含有物件的 .resources 檔轉換成 .txt 檔,所有字串資源將會被正確轉換,不過非字串物件的資料型別也將會被當做字串寫入檔案。在進行轉換時您將會遺漏內嵌物件,而 Resgen.exe 將會報告擷取資源時所發生的錯誤。

.NET Framework 2.0 版支援強型別的資源。強型別資源的支援可封裝對資源的存取,其方式是建立包含一組靜態且唯讀 (get) 屬性的類別,因而提供一個替代方式來消耗資源,而不是直接使用 ResourceManager 類別的方法。基本功能是由 Resgen.exe 中的 /str 命令列選項所提供,此選項會包裝 StronglyTypedResourceBuilder 類別的功能。當您指定 /str 選項時,Resgen.exe 的輸出是一個包含強型別屬性的類別 (這類屬性與輸入參數中所參考的資源相符)。此類別會針對所處理檔案中可用的資源提供強型別的唯讀存取。

資源檔產生器 (Resgen.exe) 工具可讓您建立 .resources 檔案以及強型別包裝函式,以存取這些 .resources 檔案。當您建立強型別包裝函式時,.resources 檔案的名稱必須符合所產生程式碼的命名空間 (Namespace) 和類別名稱 (例如,MyNamespace.MyClass.resources)。不過,資源檔產生器 (Resgen.exe) 工具可讓您指定以不相容的名稱產生 .resources 檔案的選項。若要解決這個行為,請在 資源檔產生器 (Resgen.exe) 工具產生不相容具名的輸出檔之後,重新命名這些檔案。

當您以 Resgen.exe 建立好 .resources 檔之後,請使用組件連結器 (Al.exe) 將資源嵌入執行階段二進位可執行檔,或是將它們編譯成附屬組件。

Note注意事項

如果 Resgen.exe 因任何理由而失敗,則傳回值將會是 –1。

Note注意事項

Resgen.exe 在產生強型別資源類別時,不接受包含空格的 .resx 檔名。它會將所有無效的字元取代為底線 ("_")。如需詳細資訊,請參閱 VerifyResourceName

範例

下列沒有指定任何選項的命令會顯示 Resgen.exe 的命令語法和選項。

resgen

下列命令會讀取 myResources.txt 中的名稱/值組,並寫入名為 myResources.resources. 的二進位資源檔。因為未明確指定輸出檔名,所以預設會接收相同名稱做為輸入檔。

resgen myResources.txt 

下列命令會讀取 myResources.txt 中的名稱/值組,並且寫入名為 yourResources.resources 的二進位資源檔。

resgen myResources.txt yourResources.resources

下列命令會讀取 XML 架構輸入檔 myResources.resx,並且寫入名稱為 myResources.resources 的二進位資源檔。

resgen myResources.resx myResources.resources

下列命令會讀取二進位資源檔 myResources.resources,並且寫入名為 myResources.resx 的 XML 架構輸出檔。

resgen myResources.resources myResources.resx

下列命令會讀取 XML 架構輸入檔 myResources.resx,並且寫入名稱為 myResources.txt 的 .txt 檔。請注意,如果 .resx 檔含有任何內嵌的物件,將無法精確地轉換成 .txt 檔。

resgen myResources.resx myResources.txt

下列命令會讀取 XML 架構輸入檔 myResources.resx,並且寫入名稱為 myResources.resources 的二進位資源檔。它也會利用名為 MyClass 的類別產生名為 MyFile.vb 的 Visual Basic 檔案 (此類別包含與輸入檔中參考的資源相符的強型別屬性)。MyClass 類別包含在名為 Namespace1 的命名空間內。

resgen myResources.resx myResources.resources /str:C#,Namespace1,MyClass,MyFile.cs

請參閱

參考

.NET Framework 工具
組件連結器 (Al.exe)
SDK 命令提示字元
System.Resources.Tools

概念

應用程式中的資源

其他資源

編碼和當地語系化