私たちは製品を持っていますが、いくつかのブランド変更を行っているので、2つのバージョンを構築して維持できる必要があります。リソースファイルをいくつかの#ifのものと組み合わせて使用して、文字列や画像などを解決しましたが、プログラムアイコンで問題が発生します。私はmsdnまたはグーグル検索からそれを理解することができませんでした。ありがとう!
3 に答える
アプリケーションアイコンを指していますか?プロジェクト ファイルを手動で編集して、次のようなコードを挿入できます。
<PropertyGroup>
<ApplicationIcon Condition=" '$(Configuration)' == 'Version1' ">Icon1.ico</ApplicationIcon>
<ApplicationIcon Condition=" '$(Configuration)' == 'Version2' ">Icon2.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Version1' ">
<Content Include="Icon1.ico" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Version2' ">
<Content Include="Icon2.ico" />
</ItemGroup>
構成にちなんだ名前のアイコン ファイルを作成します。(例: DebugOld.app.ico DebugBranded.app.ico、ReleaseBranded.app.ico)
ビルド前のステップを作成します。
copy "$(ProjectDir)$(ConfigurationName).app.ico" "$(ProjectDir)app.ico"
通常のコードでアイコンを設定すると、他の場所と同じ手法を使用できるはずです。リソース ファイルには両方のアイコンが必要ですが (少なくとも私はそう思います)、動作するはずです。
または、ビルド前のステップを設定して、適切なアイコンを共通のファイル名にコピーします。たとえば、debug.ico または release.ico を app.ico にコピーします。少しハックですが、うまくいくと思います。そうすれば、完成したバイナリには 1 つのアイコンしかありません。
さらに別のオプション: ビルド ファイルを調べて、アイコンがどのように組み込まれているかを確認し、それを条件付けします。Marc Gravell は、MiscUtilの参照用にこれを行いました。プロジェクトは、構成に応じて、.NET 2.0 または 3.5 のいずれかを対象としてビルドできます。リソースは非常によく似た方法で条件付けされる可能性があると思います。