次の方法で共有


GenerateResource タスク

ランタイム バイナリ実行可能ファイルに埋め込んだり、サテライト アセンブリにコンパイルしたりできる .txt ファイルと .resx (XML ベースのリソース形式) ファイルと共通言語ランタイム バイナリ .resources ファイルを変換します。 通常、このタスクは、.txt または .resx ファイルを .resources ファイルに変換するために使用されます。 GenerateResource タスクは、機能的には resgen.exeに似ています。

注意

.resx ファイル内のリソースは、BinaryFormatterを使用してシリアル化できます。セキュリティで保護。 信頼できるビルド プロセスに .resx ファイルのみを含めます。

パラメーター

次の表では、GenerateResource タスクのパラメーターについて説明します。

パラメーター 形容
AdditionalInputs 省略可能な ITaskItem[] パラメーター。

このタスクによって実行される依存関係チェックへの追加の入力が含まれています。 たとえば、通常、プロジェクトファイルとターゲット ファイルは入力する必要があり、更新されるとすべてのリソースが再生成されます。
EnvironmentVariables 省略可能な String[] パラメーター。

通常の環境ブロックに加えて(または選択的にオーバーライドする)、生成された resgen.exeに渡す必要がある環境変数の名前と値のペアの配列を指定します。
ExcludedInputPaths 省略可能な ITaskItem[] パラメーター。

最新のチェック中に追跡対象の入力を無視するパスを指定する項目の配列を指定します。
ExecuteAsTool 省略可能な Boolean パラメーター。

true場合は、tlbimp.exe 実行し、適切なターゲット フレームワークからアウトプロセスから aximp.exe して、必要なラッパー アセンブリを生成します。 このパラメーターを使用すると、ResolveComReferencesのマルチターゲットが可能になります。
FilesWritten 省略可能な ITaskItem[] 出力パラメーター。

キャッシュ ファイルがある場合は、ディスクに書き込まれるすべてのファイルの名前が含まれます。 このパラメーターは Clean の実装に役立ちます。
MinimalRebuildFromTracking 省略可能な Boolean パラメーター。

追跡対象の増分ビルドを使用するかどうかを指定するスイッチを取得または設定します。 true場合、増分ビルドが有効になります。それ以外の場合は、再構築が強制されます。
NeverLockTypeAssemblies 省略可能な Boolean パラメーター。

リソース () ファイル (true) を評価する新しい .resx を作成するか、リソース ファイルがユーザーのアセンブリ (false) を参照する場合にのみ新しい AppDomain を作成するかを指定するブール値を取得または設定します。
OutputResources 省略可能な ITaskItem[] 出力パラメーター。

生成されたファイルの名前 (.resources ファイルなど) を指定します。 名前を指定しない場合は、一致する入力ファイルの名前が使用され、作成された .resources ファイルが入力ファイルを含むディレクトリに配置されます。
PublicClass 省略可能な Boolean パラメーター。

true場合は、厳密に型指定されたリソース クラスをパブリック クラスとして作成します。
References 省略可能な String[] パラメーター。

.resx ファイル内の型の読み込み先への参照。 ファイル データ要素 .resx .NET 型を持つことができます。 .resx ファイルを読み取るときに、この型を解決する必要があります。 通常、標準の型読み込み規則を使用して正常に解決されます。 Referencesでアセンブリを指定する場合は、アセンブリが優先されます。

このパラメーターは、厳密に型指定されたリソースには必要ありません。
SdkToolsPath 省略可能な String パラメーター。

resgen.exeなど、SDK ツールへのパスを指定します。
Sources 必須 ITaskItem[] パラメーターです。

変換する項目を指定します。 このパラメーターに渡される項目には、次のいずれかのファイル拡張子が必要です。

- .txt: 変換するテキスト ファイルの拡張子を指定します。 テキスト ファイルには文字列リソースのみを含めることができます。
- .resx: 変換する XML ベースのリソース ファイルの拡張子を指定します。
- .restext: .txtと同じ形式を指定します。 この異なる拡張機能は、リソースを含むソース ファイルとビルド プロセス内の他のソース ファイルを明確に区別する場合に便利です。
- .resources: 変換するリソース ファイルの拡張子を指定します。
StateFile 省略可能な ITaskItem パラメーター。

入力ファイル内のリンクの依存関係チェックを高速化するために使用する、オプションのキャッシュ ファイルへのパス .resx 指定します。
StronglyTypedClassName 省略可能な String パラメーター。

厳密に型指定されたリソース クラスのクラス名を指定します。 このパラメーターが指定されていない場合は、リソース ファイルのベース名が使用されます。
StronglyTypedFilename 省略可能な ITaskItem パラメーター。

ソース ファイルのファイル名を指定します。 このパラメーターを指定しない場合、クラスの名前は基本ファイル名として使用され、拡張子は言語に依存します。 例: MyClass.cs.
StronglyTypedLanguage 省略可能な String パラメーター。

厳密に型指定されたリソースのクラス ソースを生成するときに使用する言語を指定します。 このパラメーターは、CodeDomProvider で使用される言語のいずれかと完全に一致する必要があります。 例: VB または C#

このパラメーターに値を渡すことで、厳密に型指定されたリソースを生成するようにタスクに指示します。
StronglyTypedManifestPrefix 省略可能な String パラメーター。

厳密に型指定されたリソースの生成されたクラス ソースで使用するリソース名前空間またはマニフェスト プレフィックスを指定します。
StronglyTypedNamespace 省略可能な String パラメーター。

厳密に型指定されたリソースの生成されたクラス ソースに使用する名前空間を指定します。 このパラメーターが指定されていない場合、厳密に型指定されたリソースはグローバル名前空間にあります。
TLogReadFiles 省略可能 ITaskItem[] 読み取り専用パラメーターです。

読み取り追跡ログを表す項目の配列を取得します。
TLogWriteFiles 省略可能 ITaskItem[] 読み取り専用パラメーターです。

書き込み追跡ログを表す項目の配列を取得します。
ToolArchitecture 省略可能な System.String パラメーター。

ResGen.exeを生成するために Tracker.exe を使用する必要があるかどうかを判断するために使用します。

ExecutableType 列挙体のメンバーに対して解析可能である必要があります。 String.Empty場合は、ヒューリスティックを使用して既定のアーキテクチャを決定します。 Microsoft.Build.Utilities.ExecutableType 列挙体のメンバーに対して解析可能である必要があります。
TrackerFrameworkPath 省略可能な String パラメーター。

FileTracker.dllを含む適切な .NET Framework の場所へのパスを指定します。

設定した場合、ユーザーは、渡す FileTracker.dll のビット数が、使用する ResGen.exe のビット数と一致することを確認する責任を負います。 設定されていない場合、タスクは現在の .NET Framework バージョンに基づいて適切な場所を決定します。
TrackerLogDirectory 省略可能な String パラメーター。

このタスクの実行から追跡ログを配置する中間ディレクトリを指定します。
TrackerSdkPath 省略可能な String パラメーター。

Tracker.exeを含む適切な Windows SDK の場所へのパスを指定します。

設定した場合、ユーザーは、渡す Tracker.exe のビット数が、使用する ResGen.exe のビット数と一致することを確認する責任を負います。 設定されていない場合、タスクは現在の Windows SDK に基づいて適切な場所を決定します。
TrackFileAccess 省略可能な Boolean パラメーター。

true の場合、入力ファイルのディレクトリは相対ファイル パスの解決に使用されます。
UsePreserializedResources 省略可能な Boolean パラメーター。

true場合は、.NET Core または .NET 5 以降ではサポートされていない PreserializedResourceWriterではなく、ResourceWriter を使用して文字列以外のリソースをシリアル化することを指定します。
UseSourcePath 省略可能な Boolean パラメーター。

true場合は、入力ファイルのディレクトリを相対ファイル パスの解決に使用することを指定します。

備考

.resx ファイルには他のリソース ファイルへのリンクが含まれている可能性があるため、.resx.resources ファイルのタイムスタンプを比較するだけでは、出力が最新であるかどうかを確認するだけでは不十分です。 代わりに、GenerateResource タスクは、.resx ファイル内のリンクに従い、リンクされたファイルのタイムスタンプも確認します。 つまり、Inputs タスクを含むターゲットで Outputs 属性と GenerateResource 属性を一般的に使用しないでください。これは、実際に実行する必要があるときにスキップされる可能性があるためです。

このタスクは、上記のパラメーターに加えて、TaskExtension クラスからパラメーターを継承し、それ自体が Task クラスから継承します。 これらの追加パラメーターとその説明の一覧については、「TaskExtension 基底クラスのを参照してください。

MSBuild 4.0 を使用して .NET 3.5 プロジェクトをターゲットにすると、x86 リソースでビルドが失敗する可能性があります。 この問題を回避するには、ターゲットを AnyCPU アセンブリとしてビルドします。

パラメーター UsePreserializedResources は、通常の .NET ビルド プロセスで $(GenerateResourceUsePreserializedResources) プロパティから値を取得します。 このプロパティは、.NET Core プロジェクトおよび .NET 5 以降を使用するプロジェクトで既定で true に設定されます。 $(GenerateResourceUsePreserializedResources)true に設定すると、.NET SDK は、文字列以外のリソースを使用する .NET Framework 4.6.1 以降を対象とするプロジェクトをビルドできます。 アセンブリ System.Resources.Extensions は実行時に使用できる必要があります。 .NET Core 3.0 以降および .NET 5 以降で使用でき、PackageReference を使用して .NET Framework 4.6.1 以降で使用できます。

次の例では、GenerateResource タスクを使用して、.resources 項目コレクションで指定されたファイルから Resx ファイルを生成します。

<GenerateResource
    Sources="@(Resx)"
    OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
    <Output
        TaskParameter="OutputResources"
        ItemName="Resources"/>
</GenerateResource>

GenerateResource タスクは、<LogicalName> 項目の <EmbeddedResource> メタデータを使用して、アセンブリに埋め込まれているリソースに名前を付けます。

アセンブリの名前が myAssembly であると仮定すると、次のコードは someQualifier.someResource.resourcesという名前の埋め込みリソースを生成します。

<ItemGroup>
    <EmbeddedResource Include="myResource.resx">
        <LogicalName>someQualifier.someResource.resources</LogicalName>
        <WithCulture>false</WithCulture>
    </EmbeddedResource>
</ItemGroup>

<LogicalName> メタデータがない場合、リソースには myAssembly.myResource.resourcesという名前が付けられます。 この例は、Visual Basic および Visual C# のビルド プロセスにのみ適用されます。

関連項目