2009-03-03 8 views
20

私は現在、ちょうど私がビルドがTESTであることを起こる場合は、いくつかの特定のアクションを決定するために、コンパイラの条件を採用するが、DEBUGの設定のすべてを取るのVisual Studioを経由して、Testという名前の構成を作成しました| DEBUG | RELEASE。MSBuildのがDEBUG以外のビルド構成を認識しています| RELEASE

ただし、MSBUILDスクリプトを使用してTEST構成を検出するにはどうすればよいですか?

@(SolutionsToBuildが)私の解決策である場合には現在、私は

<MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=$(Configuration);OutDir=$(BuildDir)\Builds\" /> 

を構築します。 Common MsBuild Project Propertiesでは、$(Configuration)は共通のプロパティですが、常に空白になっていますか? RELEASE |

は、これは設定されていませんますが、単に私の使用のために、またはそれだけでDEBUGを検出することができることを予約されていないことを意味しています。もしそうなら、異なるビルド構成の作成を許可する点は何ですか?私はMSBUILD設定ファイルを定義するとあまり行っていないが、私が行っている

答えて

41

は、私はVisual Studioの内部ReleaseNoUploadsの構成を定義し、この

msbuild /v:n /p:Configuration=Release "Capture.sln" 
msbuild /v:n /p:Configuration=ReleaseNoUploads "Capture.sln" 

のようなバッチファイルを使用して、異なる構成のビルド。

  • オープンツール:オプションメニュー、プロジェクトおよびソリューションに行く:一般オプション、およびをチェックここで

    は、私は(これは、Visual Studio 2005である)、そのためにしなければならなかったものです高度なビルド設定
    を表示します。そこから
  • ビルドに行く:ポップアップするダイアログで設定 Managerメニュー
  • アクティブソリューション構成にプルダウンをクリックして、新しいビルドを作成するために、<新... >をクリックしてください構成。
+1

念頭に置いておくべきもう一つのことは、ソリューションと同様にビルド構成を作成する – Dean

+0

それはどういう意味ですか? –

2

「Visual Studioの内部」、$(構成)と$(プラットフォーム)が常に一番上にドロップダウンで構成マネージャのものを使用してVSによって設定されていることに注意してください。一方、コマンドラインからmsbuildを使ってこれらの値を設定する場合は、値を明示的に渡す必要があります(@ MarkBiekの回答のように)。

(大部分のVSプロジェクトテンプレートは、「設定/プラットフォームの値にデフォルトで設定されます」ので、これらの値を明示的に指定せずにコマンドラインMSBuildを使用することができます。彼らが実際よりも少し魔法の/奇妙な。)

2

は、通常、私は両方を単一のMSBuildのスクリプトからビルドリリースとデバッグを持って何をすべきかです:それぞれのその後

<Target Name="configurations"> 
    <CreateItem Include="$(Configuration)"> 
     <Output TaskParameter="Include" ItemName="Configuration" /> 
    </CreateItem> 
    </Target> 

をそして:

<PropertyGroup Condition="'$(Configuration)'==''"> 
    <Configuration>Debug;Release</Configuration> 
</PropertyGroup> 

が続いてMSBuildの秘密のソースのが、これを追加しますターゲットは次のようにしてください:

<Target Name="Compile" DependsOnTargets="configurations" Inputs="@(Configuration)" Outputs="target\%(Configuration.FileName)"> 
    <MSBuild Projects="@(MyProjects)" Targets="Build" Properties="Configuration=%(Configuration.Identity);WarningLevel=1" /> 
    </Target> 
関連する問題