4

テスト用と本番用の2つのコードベースがあります。これら2つのコードベースの唯一の違いは、2つのファイルにあります。

  • 構成ファイル
  • ビルドファイル(.csproj)

2つのブランチを維持することは、コードベースを1つにマージし、継続的インテグレーション(Hudsonなど)を使用してターゲット環境に応じてファイルを変更することで排除できるかなりの労力です。

VS2010の時点で、構成ファイル用の非常にスマートなソリューションがあり、2つのビルド構成「Release-Test」と「Release-Prod」に対して異なる構成ファイル変換を定義できます。

ただし、プロジェクトファイル(.csproj)には、次のようないくつかの違いが反映されています。

  • 結果のアセンブリの名前:Foo.exeとFoo-Test.exe。
  • アセンブリバージョン。
  • ClickOnce配置設定。

ビルド構成に基づいてcsprojファイルを変換する方法、またはこれらの設定を構成ファイルまたはC#コードに抽出する方法はありますか?

アップデート:

@JaredParによって提案されたように、csprojファイルで条件付きMSBuildプロパティを試してみましたが、いくつかの注意点があります(詳細については私のコメントを参照してください)。これを達成する他の方法はありますか?

4

1 に答える 1

2

csproj特定のビルド構成に基づいて、アセンブリ名のような単一の制御要素を使用したいようです。Conditionalもしそうなら、あなたはMSBuildプロパティの要素を探しています

<AssemblyName Condition="'$(Configuration)' == 'Release-Prod'">Foo</AssemblyName>
<AssemblyName Condition="'$(Configuration)' == 'Release-Test'">Foo-Test</AssemblyName>
于 2012-03-27T14:35:09.820 に答える