2012-12-07 70 views
8

我想在相同的解決方案配置中兩次構建相同的項目,改變一些#define標誌來切換功能。這兩個二進制文件將以不同的名稱進行部署。我可以在一個解決方案配置中構建項目的多個配置嗎?

,我知道這些解決方案可以工作:

  1. 添加一個解決方案配置 - 但後來我需要構建解決方案的兩倍,我寧願避免。兩個項目配置將始終構建。

  2. 複製項目 - 但是當我只想維護一個不同的配置時,我有維護新項目的開銷。

  3. 批量構建 - 我避免使用批量構建,因爲我同時使用devenv進行本地開發,並使用msbuild進行持續集成。

任何其他想法或建議?

回答

5

只是想出了一個辦法來做你的要求。創建一個msbuild文件(我將它命名爲multiple.proj)並添加下面的腳本。

<?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):

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

這個腳本告訴的MSBuild重新建立自己的工程中的用另一個配置作爲AfterBuild事件。我使用Debug/Release來創建示例,但您可以輕鬆更改腳本以支持其他配置,或者根據其他變量重新構建決策。

要小心,因爲您一次運行兩個版本,因此構建錯誤可能會更難理解。

希望這會有所幫助。

+0

這看起來像一個不錯的方法 - 我必須給它一個旋轉。 –

相關問題