2009-04-13 1 views
1

使用するコンパイル定数に応じて、どのリソースをコンパイルするかを選択するにはどうすればよいですか?したがって、VAR1 = 0の場合、最終アセンブリにRESOURCE_Aを追加しません。.NETでの選択的なリソースのコンパイル?

私は周りを検索しましたが、これに関する情報は見つかりませんでした...間違ったキーワードを使用していると思います。

また、VS2005と2008の両方を私の仕事で使っています。主にVBですが、C#でも問題はありません。

答えて

0

コンパイル定数はコードにのみ影響します。両方のリソースをアセンブリに追加し、コンパイル定数に応じて適切なリソースを取得できます。

これを達成する他の方法はもちろんあります。定義した何らかの基準に基づいて、ビルド前のイベントで適切なリソースをコピーします。

+0

.NET上のリソースに対してコンパイル定数を定義することはできません。 また、すべてのリソースを追加することが常に必要なわけではありません。 A)最終アセンブリにサイズオーバーヘッドを追加します。 B)一部のバージョンのソフトウェアのアセンブリにコンパイルしたくないリソースが存在することがあります –

1

あなたは、MSBuildの< >要素を選択して使用してこれを実現できます。

<Choose> 
    <When Condition=" '$(Configuration)'=='Debug' "> 
     <ItemGroup> 
      <EmbeddedResource Include="debug_resource.txt" /> 
     </ItemGroup> 
    </When> 
    <When Condition=" '$(Configuration)'=='retail' "> 
     <ItemGroup> 
      <EmbeddedResource Include="retail_resource.txt" /> 
     </ItemGroup> 
    </When> 
</Choose> 

...もちろん、あなたが$(構成)変数以外のものを使用することができます。ファイル/フォルダの存在を確認したり、別のタスクの出力を使用したり、別の変数を使用したりすることができます。

関連する問題