次のオプションは、C# コンパイラによる Win32 リソースの作成またはインポート方法を制御します。 新しい MSBuild 構文は太字で示されています。 以前の csc.exe 構文は、code style で示されています。
-
Win32Resource /
-win32res: Win32 リソース ファイル (.res) を指定します。 -
Win32Icon /
-win32icon: 指定されたアセンブリ ファイルからメタデータを参照します。 -
Win32Manifest /
-win32manifest: Win32 マニフェスト ファイル (.xml) を指定します。 -
NoWin32Manifest /
-nowin32manifest: 既定の Win32 マニフェストを含めません。 -
EmbeddedResource /
-resource: 指定したリソースを埋め込みます (短い形式: /res)。 -
LinkResource /
-linkresource: 指定したリソースをこのアセンブリにリンクします。
Note
プロジェクトに対してこれらのオプションを構成する方法の詳細については、「 コンパイラ オプション」を参照してください。
Win32Resource
Win32Resource オプションは、Win32 リソースを出力ファイルに挿入します。
<Win32Resource>filename</Win32Resource>
filename は出力ファイルに追加するリソース ファイルです。 Win32 リソースには、エクスプローラーでアプリケーションを識別するのに役立つバージョンまたはビットマップ (アイコン) 情報を含めることができます。 このオプションを指定しない場合、コンパイラはアセンブリのバージョンに基づいてバージョン情報を生成します。
Win32Icon
Win32Icon オプションを使用すると、出力ファイルに.ico ファイルが挿入され、エクスプローラーで出力ファイルが目的の外観になります。
<Win32Icon>filename</Win32Icon>
filename は出力ファイルに追加する .ico ファイルです。
リソース コンパイラを使用して、.ico ファイルを作成できます。 リソース コンパイラは、Visual C++ プログラムをコンパイルするときに呼び出されます。
.ico ファイルが .rc ファイルから作成されます。
Win32Manifest
Win32Manifest オプションを使用して、プロジェクトのポータブル実行可能ファイル (PE) ファイルに埋め込むユーザー定義の Win32 アプリケーション マニフェスト ファイルを指定します。
<Win32Manifest>filename</Win32Manifest>
filename は、カスタム マニフェスト ファイルの名前と場所です。 既定では、C# コンパイラは、 asInvokerの要求された実行レベルを指定するアプリケーション マニフェストを埋め込みます。 実行可能ファイルがビルドされているのと同じフォルダーにマニフェストが作成されます。
highestAvailableまたはrequireAdministratorの要求された実行レベルを指定するなど、カスタム マニフェストを指定する場合は、このオプションを使用してファイルの名前を指定します。
Note
Win32Manifest オプションと Win32Resource オプションは相互に排他的です。 同じコマンド ラインで両方のオプションを使用しようとすると、ビルド エラーが発生します。
要求された実行レベルを指定するアプリケーション マニフェストがないアプリケーションは、Windowsのユーザー アカウント制御機能の下でファイルとレジストリの仮想化の対象となります。 詳細については、「ユーザー アカウント制御」を参照してください。
次のいずれかの条件に該当する場合、アプリケーションは仮想化の対象となります。
- NoWin32Manifest オプションを使用していて、後のビルド手順で、またはWin32Resource オプションを使用して Windows リソース ( .res) ファイルの一部としてマニフェストを提供していない。
- 要求実行レベルが指定されていないカスタム マニフェストを提供している。
Visual Studio は、既定の .manifest ファイルを作成し、それを実行可能ファイルと一緒にデバッグとリリースのディレクトリに保存します。 カスタム マニフェストを追加するには、任意のテキスト エディターでカスタム マニフェストを作成し、そのファイルをプロジェクトに追加します。 または、ソリューション エクスプローラーで [プロジェクト] アイコンを右クリックし、 [新しい項目の追加] を選択して、 [アプリケーション マニフェスト ファイル] を選択します。 新規または既存のマニフェスト ファイルを追加すると、[ マニフェスト ] ドロップダウン リストに表示されます。 詳しくは、「[アプリケーション] ページ (プロジェクト デザイナー) (C#)」をご覧ください。
アプリケーション マニフェストは、カスタムのビルド後手順として提供するか、NoWin32Manifest オプションを使用して、Win32 リソース ファイルの一部として提供できます。 アプリケーションを Windows Vista でファイルまたはレジストリの仮想化の対象にする場合は、これと同じオプションを使用します。
NoWin32Manifest
NoWin32Manifest オプションを利用し、アプリケーション マニフェストを実行可能ファイルに埋め込まないようコンパイラに指示します。
<NoWin32Manifest />
このオプションを使用する場合、Win32 リソース ファイルまたは後のビルド手順でアプリケーション マニフェストを指定しない限り、アプリケーションはWindows Vistaの仮想化の対象になります。
Visual Studio では、このオプションを [アプリケーション プロパティ] ページで設定します。[マニフェスト] ドロップダウン リストの [マニフェストなしでアプリケーションを作成します] を選択します。 詳しくは、「[アプリケーション] ページ (プロジェクト デザイナー) (C#)」をご覧ください。
EmbeddedResource
指定されたリソースを出力ファイルに埋め込みます。
<EmbeddedResource Include="filename">
<LogicalName>identifier</LogicalName>
<Access>accessibility-modifier</Access>
</EmbeddedResource>
filename は、出力ファイルに埋め込む .NET リソース ファイルです。
identifier (省略可能) は、リソースの論理名です。リソースの読み込みに使用する名前です。 既定値は、ファイルの名前です。
accessibility-modifier (省略可能) はリソースのアクセシビリティで、パブリックまたはプライベートのどちらかです。 既定値はパブリックです。 既定では、C# コンパイラを使用してリソースを作成すると、リソースはアセンブリ内でパブリックになります。 リソースをプライベートにするには、アクセシビリティ修飾子として private を指定します。 他のアクセシビリティは許可されていません。
filenameがResgen.exeや開発環境などによって作成された.NET リソース ファイルである場合は、System.Resources名前空間のメンバーを使用してアクセスできます。 詳細については、「System.Resources.ResourceManager」を参照してください。 それ以外のすべてのリソースに対しては、GetManifestResource クラスの Assembly メソッドを使用して、実行時にリソースにアクセスします。 出力ファイル内のリソースの順序は、プロジェクト ファイルで指定された順序から取得されます。
LinkResource
.NET のリソースへのリンクを出力ファイルに作成します。 リソース ファイルは出力ファイルに追加されません。 LinkResource は、出力ファイルにリソース ファイルを埋め込む EmbeddedResource オプションとは異なります。
<LinkResource Include="filename">
<LogicalName>identifier</LogicalName>
<Access>accessibility-modifier</Access>
</LinkResource>
filename は、アセンブリからリンクする .NET リソース ファイルです。
identifier (省略可能) は、リソースの論理名です。リソースの読み込みに使用する名前です。 既定値は、ファイルの名前です。
accessibility-modifier (省略可能) はリソースのアクセシビリティで、パブリックまたはプライベートのどちらかです。 既定値はパブリックです。 既定では、C# コンパイラを使用して作成すると、リンクされたリソースはアセンブリ内でパブリックになります。 リソースをプライベートにするには、アクセシビリティ修飾子として private を指定します。 他の修飾子は使用できません。
filenameがResgen.exeや開発環境などによって作成された.NET リソース ファイルである場合は、System.Resources名前空間のメンバーを使用してアクセスできます。 詳細については、「System.Resources.ResourceManager」を参照してください。 それ以外のすべてのリソースに対しては、GetManifestResource クラスの Assembly メソッドを使用して、実行時にリソースにアクセスします。
filename で指定するファイルはどのような形式でもかまいません。 たとえば、ネイティブ DLL をアセンブリの一部にして、グローバル アセンブリ キャッシュにインストールし、アセンブリ内のマネージド コードからアクセスできるようにすることができます。 同じことをアセンブリ リンカーで行うことができます。 詳しくは、「Al.exe (アセンブリ リンカー)」および「アセンブリとグローバル アセンブリ キャッシュの使用」をご覧ください。
.NET