2011-11-30 46 views
0

我有多個項目的解決方案。我正在嘗試使用MSBUILD來自動部署。我有以下配置值用於編譯 1.調試 2.版本 3.對於某些項目,我使用發佈模式進行DEV配置。但在使用DEV作爲MSBUILD命令中的配置時,它會拋出異常,說DEV未找到配置。未提供指定配置時使用MSBUILD

當DEV在MSBUILD中用作配置時,如果DEV對於項目不可用,我們可以告訴MSBUILD使用發佈模式嗎?

感謝 Ashwani

回答

2

在你(大概是C#)項目文件中,通常是一條線,看起來像這樣:

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

對於那些沒有「開發」配置的項目,你可以得到你的行爲通過添加另一條線,一個前右想......

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

這樣,當你建立與「開發」規定,這些項目將建立自己的版本配置,而不是,它模仿瞭解決方案的配置管理器的行爲(我傾向於認爲它是可憎的一個功能)直接在項目文件本身中,這是正確的做法。

另一種方法是在項目數組上使用AdditionalProperties元數據,該元數據將傳遞給MSBuild任務以構建項目。您可以指定 - 感興趣的項目 - 以下...

<SolutionItem Include="./PathTo/SomeProject.csproj"> 
    <AdditionalProperties Condition="'$(Configuration)' == 'Dev'" 
     >Configuration=Release</AdditionalProperties> 
</SolutionItem> 

0

我不認爲它可以通過命令參數的MSBuild來完成。 您可以做的是使用Configuration Manager for Visual Studio,對於解決方案配置「Dev」,將沒有「Dev」配置的項目指向Release。

然後你爲Dev配置做一個解決方案構建,一些項目將在發佈版本中構建。

+0

如果我使用的解決方案來構建這種方法將工作(從書「的MSBuild掛羊頭賣狗肉」欺騙#80摘錄) ,但我只使用單獨的項目及其相關項目?有什麼辦法可以實現? –