2011-12-06 6 views
3

build configuration inheritanceに深く入り込んだ後、次の質問が表示されます。いくつかのパッケージにのみ存在するビルド構成はどうやって処理しますか?自動ビルドを行う際に、プロジェクトごとに異なるビルド構成を扱うにはどうすればよいですか?

このように見えるように使用するコマンドラインからのビルド:

msbuild ..\lib\Package1.dproj /target:Build /p:config=%1 
msbuild ..\lib\Package2.dproj /target:Build /p:config=%1 
msbuild ..\lib\Package3.dproj /target:Build /p:config=%1 

パラメータconfigDebugまたはReleaseのいずれかでした。これはうまくいった。

パッケージのいくつかはRelease_Child_Config(私の場合はReleaseを継承します)のような新しいビルド構成を持っています。私は今、(例えば)を行う必要があります:

msbuild ..\lib\Package1.dproj /target:Build /p:config=Release_Child_Config 
msbuild ..\lib\Package2.dproj /target:Build /p:config=Release_Child_Config 
msbuild ..\lib\Package3.dproj /target:Build /p:config=Release 

この例ではPackage3Release_Child_Configと呼ばれるビルド構成を持っていません。つまり、もう1つのconfigパラメータを使用することはできません。

特別なビルドコンフィギュレーションRelease_Child_Configを持つすべてのパッケージをビルドしたい場合、他のパッケージはReleaseに戻ってください。何とかこれを自動化することは可能ですか?または、各パッケージの各ビルド構成を作成する必要がありますか?

+0

バッチスクリプトを '%1'に渡していますか? –

+0

'Debug'または' Release'です。 –

+0

.batファイルのif文を使用して、Releaseをそのプロジェクトを必要とするリリースのRelease_Child_Configに変換することができます。しかし、それはあなた自身のために人生を困難にしているようです。プレーンなリリースにこだわってみませんか? –

答えて

0

両方の設定を使用してください。 1が有効でない場合、ビルドはスキップする必要があります。

msbuild ..\lib\Package1.dproj /target:Build /p:config="Release_Child_Config;Release" 
msbuild ..\lib\Package2.dproj /target:Build /p:config="Release_Child_Config;Release" 
msbuild ..\lib\Package3.dproj /target:Build /p:config="Release_Child_Config;Release" 

または「リリース; Release_Child_Config」をする設定の順序を変更する(リリースが最初に構築されます)

+0

これは本当ですか? 。dprojファイルには、 '$(Config) '==' Release 'のような複数のチェックがあり、また、' Release_Child_Config; Release 'が1つの値として扱われるというmsbuildのヒントのコマンドラインもあります。 –

+0

[It sholud work](http://social.msdn.microsoft.com/Forums/en-CA/msbuild/thread/b2c2808e-92a0-4866-8f-3-cc550d1c469)ItemListとして内部的に扱われる必要があります。 – Ludwo

+0

ええと、それは何かしますが、私が 'config'として指定したものではありません。 'Base'を使用しているようです。私の賭けは、.dprojファイルは単一のparamの値のそのようなリストを扱う準備が必要であるが、そうではないということです。 –

0

より良い何かがここまで来るまで、私の暫定的なソリューションです。スクリプトを介してバッチコマンドを生成します。

  • スクリプト入力:
  • スクリプトの出力を構築するためのプロジェクトのリスト:各プロジェクト

のビルドコマンドを含むバッチファイルは、スクリプトは、プロジェクトファイル(.dproj)のそれぞれに見て、い単純な文字列検索。それはRelease_Child_Configを見つけた場合には、バッチファイルにこれを書き込みます

msbuild ..\lib\Package1.dproj /target:Build /p:config=Release_Child_Config 

ない場合は、これにフォールバック:スクリプトは、もう少しので、それはまたのために使用することができるんもちろん

msbuild ..\lib\Package1.dproj /target:Build /p:config=Release 

DebugDebug_Child_Configなどの類似したケース。これまでのところ、それは仕事をしてビルドチェーンに合っています。

関連する問題