質問

Visual Studioを介してTestという名前の構成を作成しました。現在はすべてのDEBUG設定のみを使用しますが、ビルドがTEST | DEBUG | RELEASEである場合、コンパイラ条件を使用して特定のアクションを決定します。

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

現在、ビルドしています

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

@(SolutionsToBuild)は私のソリューションです。 一般的なMsBuildプロジェクトプロパティでは、$(Configuration)は共通のプロパティですが、常に空白に見えますか?

これは、決して設定されず、単に私の使用のために予約されていること、またはDEBUG | RELEASEのみを検出できることを意味します。もしそうなら、異なるビルド構成の作成を許可するポイントは何ですか?

役に立ちましたか?

解決

MSBUILD構成ファイルの定義はあまり行いませんでしたが、このようなバッチファイルを使用してさまざまな構成のビルドを行いました

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

Visual Studio内で ReleaseNoUploads 構成を定義しました。

そのために私がしなければならないことは次のとおりです(これはVisual Studio 2005です):

  • ツール:オプションメニューを開き、プロジェクトとソリューション:一般オプションに移動して、高度なビルド構成を表示をオンにします。
  • そこから、 Build:Configuration Managerメニュー
  • に移動します
  • ポップアップするダイアログで、アクティブなソリューション構成プルダウンをクリックし、 <!> lt;新規... <!> gt; をクリックして、新しいビルド構成。

他のヒント

もちろん、定義したい数のカスタムビルド構成を持つことができます。セットアップがどのように見えるかについては、関連する質問を参照してください。

ビルド構成に基づいてapp.configを条件付きでデプロイする方法は?

「Visual Studioの内部」の場合、$(Configuration)と$(Platform)は常に、VSによって上部のドロップダウンのConfiguration Managerを使用して設定されることに注意してください。一方、コマンドラインからmsbuildを使用してこれらの値を設定する場合は、(@ MarkBiekの答えのように)値を明示的に渡す必要があります。

(ほとんどのVSプロジェクトテンプレートは、Configuration / Platformの値を「デフォルト」にするため、これらの値を明示的に指定せずにコマンドラインMSBuildを使用できます。実際よりも少し不思議/奇妙です。)

通常、リリースとデバッグの両方を単一のMSBuildスクリプトからビルドするために行うことは次のとおりです。

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

次に、MSBuildシークレットソースを追加します:

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

そして、各ターゲットに対して次のようなことを行います:

  <Target Name="Compile" DependsOnTargets="configurations" Inputs="@(Configuration)" Outputs="target\%(Configuration.FileName)">
    <MSBuild Projects="@(MyProjects)" Targets="Build" Properties="Configuration=%(Configuration.Identity);WarningLevel=1" />
  </Target>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top