2011-10-23 14 views
0

私はC#/ WPFアプリケーションを持っています。私は彼らのブランドで異なる顧客に出荷する異なるバージョンを作成しようとしています。 ブランド名は現在、アイコン、スプラッシュ画面、exe名のAssemblyInfo.csにあります。VS2010カスタムビルド

私は別のプロジェクト構成を作成できたと思っていましたが、私は個々のAssemblyInfo.csファイルを各顧客ごとに作成できると思っていました。

しかし、このプロジェクトでは1つのassemblyinfoしか許可されていないようで、設定ごとに変更することはできません(Project Propertiesダイアログの最初のタブなど)。

AssemblyInfo.cs情報をリソースに入れてから、顧客ごとに1つずつ複数のリソースファイルを作成し、別のリソースにリンクする別々の構成を使用するとよいでしょうか?

私は開発を続けていきたいと考えていました。ネイティブブランディングのもとで開発してから、すべてのリリースビルドをビルドして各顧客のexesを作成することができました。

どのように私が維持可能な解決策を作ることができるかについての助言や提案はすばらしいでしょう。

答えて

2

AssemblyInfo.csファイルは、クラスファイルではありませんが、実際にはクラス情報はありません。デフォルトでは、属性には単に属性が含まれています。あなたはこれらの属性を中心に、条件付きコンパイルシンボルを使用することができます。

#if MY_SYMBOL 
[assembly: AssemblyTitle("Tim's Magical Application")] 
#else 
[assembly: AssemblyTitle("Some Other Name")] 
#endif 

あなたもそこにcustom attributes独自のものを使用することができます。

しかし、プロジェクトがこのファイルには、プロジェクトのプロパティのフォルダに存在する1

assemblyinfoのみを許可するように思えます。別の.csファイルの横に、別の属性リスト(例: AssemblyInfo.custom.cs)を追加することもできます。プロジェクトプロパティダイアログで変更したエントリは、元のAssemblyInfo.csファイルに反映され、カスタムオブジェクトは変更されません。

したがって、AssemblyInfo.csの属性を使用して顧客固有のブランドを制御する場合は、いくつかの方法があります。個人的には、ニュートラルイメージをゆるやかにパッケージ化して、ビルドプロセスまたはインストーラビルドのいずれかを使用して、配布可能パッケージに適切なブランディングイメージを組み込む(ニュートラルイメージを置き換える)。

+0

優れています。私は、csファイル内のいくつかの他のものに対処するために各設定に#ifシンボルを持つことを計画していましたが、assemblyinfo.csの#ifに私には起こりませんでした。あなたが詳しいことができたら、そのイメージを扱うことについての詳しい情報を教えてください。 – tim