2012-12-07 19 views
8

同じソリューション構成で同じプロジェクトを2回構築したいと思います。いくつかの#defineフラグを変更して機能を切り替えます。どちらのバイナリも異なる名前で配備されます。私は仕事ができる知っている1つのソリューション構成内に複数のプロジェクト構成を構築できますか?

ソリューション:

  1. は、ソリューションの設定を追加します - しかし、私は、私は避けることを好むだろうどの、二回のソリューションを構築する必要があります。どちらのプロジェクト構成も常に構築されます。

  2. プロジェクトをコピーする - しかし、私は別の設定を維持したいときに新しいプロジェクトを維持するオーバーヘッドがあります。

  3. バッチビルド - ローカル開発にはdevenvを使用し、継続的なインテグレーションにはmsbuildを使用するため、バッチビルドを使用しないでください。

他のアイデアや提案はありますか?

答えて

5

あなたが求めたことをやり遂げる方法を考え出しました。 1つのmsbuildファイル(mine multiple.projという名前)を作成し、以下のスクリプトを追加します。

<Import Project="..\multiple.proj" /> 

このスクリプトは、再びあなたのprojecを構築するためにMSBuildのを伝えます:

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Choose> 
    <When Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> 
     <ItemGroup> 
     <ProjectToBuild Include="$(MSBuildProjectName).csproj"> 
      <Properties>Configuration=Release</Properties> 
     </ProjectToBuild> 
     </ItemGroup> 
    </When> 
    </Choose> 
    <Target Name="BeforeBuild"> 
    <Message Text="Building configuration $(Configuration)..." /> 
    </Target> 
    <Target Name="AfterBuild"> 
    <MSBuild Projects="@(ProjectToBuild)"/> 
    </Target> 
</Project> 

</type> 
</this> 

インポートプロジェクトのスクリプト(csprojまたはvbproj)

別の構成をAfterBuildイベントとして使用します。デバッグ/リリースを使用してサンプルを作成しましたが、他の構成をサポートするようにスクリプトを簡単に変更したり、他の変数に基づいてビルドを再決定することができます。

2つのビルドを同時に実行しているため、ビルドエラーを理解するのが難しくなるので注意してください。

これが役に立ちます。

+0

これはすてきなアプローチのように見えます - 私はそれをスピンアップしなければなりません。 –

関連する問題