次の方法で共有


リソース ファイル ジェネレータ (Resgen.exe)

リソース ファイル ジェネレータは、.txt ファイルおよび .resx (XML ベースのリソース形式) ファイルを共通言語ランタイムのバイナリの .resources ファイルに変換します。この .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

.resources ファイルまたは .txt ファイルに変換する、XML ベースのリソース ファイルの拡張子を指定します。

.resources

.resx ファイルまたは .txt ファイルに変換するリソース ファイルの拡張子を指定します。

outputFilename.extension

作成するリソース ファイルの名前。

.txt ファイルまたは .resx ファイルから変換する場合、この引数は省略できます。テキスト ファイルまたは .resx ファイルを .resources ファイルに変換する場合は、拡張子 .resources を指定できます。outputFilename を指定しないと、入力ファイルを指定する引数 filename に拡張子 .resources が追加され、そのファイルが filename を含むディレクトリに書き込まれます。

.resources ファイルから変換する場合、引数 outputFilename は必ず指定する必要があります。.resources ファイルを XML ベースのリソース ファイルに変換する場合は、拡張子 .resx を指定します。.resources ファイルをテキスト ファイルに変換する場合は、拡張子 .txt を指定します。.resources ファイルを .txt ファイルに変換するのは、.resource ファイルに文字列値だけが含まれている場合に限ります。

オプション 説明

/compile

複数の .resx ファイルまたは .txt ファイルを指定して、一括した操作で .resources ファイルに変換できるようにします。このオプションを指定しない場合、指定できる入力ファイル引数は 1 つだけです。

/publicClass

厳密に型指定されたリソース クラスをパブリック クラスとして作成します。

/str: オプションを使用しない場合、このオプションは無視されます。

/r: assembly

型が assembly から読み込まれることを指定します。このオプションを指定すると、以前のバージョンの .resx ファイルの型は assembly の型を使用します。

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

厳密に型指定されたリソース クラス ファイルを、language オプションで指定されているプログラミング言語 (C# または Visual Basic) で作成します。namespace オプションを使用してプロジェクトの既定の名前空間を指定したり、classname オプションを使用して生成されるクラスの名前を指定したり、filename オプションを使用してクラス ファイルの名前を指定したりできます。

/usesourcepath

入力ファイルの現在のディレクトリを使用して相対ファイル パスを解決することを指定します。

解説

Resgen.exe は、次の 4 つのクラスで実装されているメソッドをラップすることによってファイルを変換します。

.NET Framework アプリケーションでは、ResXResourceWriter が作成した .resx ファイルを直接は使用できません。このファイルは、開発したアプリケーションに追加する前に、Resgen.exe で .resources ファイルに変換してください。記述したコードで上記のクラスを実装する方法の詳細については、それぞれの関連トピックを参照してください。

指定した入力ファイルを Resgen.exe で解析するためには、.txt ファイルおよび .resx ファイルが正しい形式であることが必要です。

テキスト ファイルには、文字列リソースだけを含めることができます。文字列リソースは、文字列を複数の言語に翻訳する必要があるアプリケーションを記述する場合に便利です。たとえば、適切な文字列リソースを使用することで、メニュー文字列を簡単に地域固有の文字列に変更できます。Resgen.exe は名前と値のペアを含むテキスト ファイルを読み取ります。名前はリソースを説明する文字列で、値はリソース文字列そのものです。次のように、名前と値のペアは、1 行に 1 ペアずつ指定する必要があります。

name=value

テキスト ファイルでは空の文字列を使用できることに注意してください。次に例を示します。

EmptyString=

Resgen.exe は、テキスト ファイルの中でリソース名が重複していないかどうかを確認します。テキスト ファイルの中でリソース名が重複している場合は、警告メッセージが出され、重複している名前は無視されます。テキスト ファイル形式の詳細については、「テキスト ファイル形式のリソース」を参照してください。

.resx リソース ファイル形式は、XML エントリから構成されます。.txt ファイルの場合と同様、それらの XML エントリの中に文字列リソースを指定できます。.resx ファイルが .txt ファイルよりも優れている点は、オブジェクトの指定または埋め込みもできることです。.resx ファイルを表示してみると、埋め込みオブジェクト (画像など) のバイナリ形式を実際に参照できます (このバイナリ情報がリソース マニフェストの一部に含まれている場合)。.txt ファイルの場合と同様、.resx ファイルはテキスト エディタ (ノートパッドまたは Microsoft Word など) で開き、内容を書き込み、解析、操作できます。そのためには、XML のタグや .resx ファイルの構造を十分に知っておく必要があります。.resx ファイル形式の詳細については、「.Resx ファイル形式のリソース」を参照してください。

文字列以外の埋め込みオブジェクトを含む .resources ファイルを作成するには、そのオブジェクトを含む .resx ファイルを Resgen.exe で変換するか、ResourceWriter クラスで提供されているメソッドを使用して、そのオブジェクト リソースをコードから直接ファイルに追加する必要があります。オブジェクトを含む .resources ファイルを Resgen.exe で .txt ファイルに変換する場合、文字列リソースはすべて正しく変換されますが、非文字列オブジェクトのデータ型も文字列としてファイルに書き込まれることになります。この変換処理では埋め込みオブジェクトが失われるため、リソースの取得時にエラーが発生したと報告されます。

.NET Framework バージョン 2.0 では、厳密に型指定されたリソースがサポートされています。厳密に型指定されたリソースのサポート機能では、静的な読み取り専用の (get) プロパティ セットを含むクラスを作成してリソースへのアクセスをカプセル化するため、ResourceManager クラスのメソッドを直接使用せずに、別の方法でリソースを使用します。基本的な機能は、StronglyTypedResourceBuilder クラスの機能をラップする、Resgen.exe の /str コマンド ライン オプションに用意されています。/str オプションを指定した場合の Resgen.exe の出力は、入力パラメータで参照されるリソースと一致する厳密に型指定されたプロパティを含むクラスです。このクラスは、処理されたファイルで使用できるリソースに対する、厳密に型指定された読み取り専用アクセスを提供します。

リソース ファイル ジェネレータ (Resgen.exe) ツールを使用すると、.resources ファイルと .resources ファイルにアクセスするための厳密に型指定されたラッパーを作成できます。厳密に型指定されたラッパーを作成するときは、生成されたコードの名前空間とクラス名に .resources ファイルの名前を合わせる必要があります (例 : MyNamespace.MyClass.resources)。ただし、リソース ファイル ジェネレータ (Resgen.exe) ツールでは、互換性のない名前の .resources ファイルを生成するオプションを指定することもできます。これを回避するには、リソース ファイル ジェネレータ (Resgen.exe) ツールが互換性のない名前を生成した後に出力ファイルの名前を変更します。

Resgen.exe で .resources ファイルを作成したら、アセンブリ リンカ (Al.exe) を使用して、そのリソースをランタイム バイナリ実行可能ファイルに埋め込むか、コンパイルしてサテライト アセンブリに組み込みます。

注意

何らかの理由により Resgen.exe が失敗した場合は、値 –1 が返されます。

注意

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

概念

アプリケーションのリソース

その他の技術情報

エンコーディングとローカリゼーション