2009-02-20 69 views
3

在Visual Studio中,我爲各種層次(開發,暫存,測試等)提供了自定義MSBuild操作。這些腳本會自動編譯所有內容,執行web.config交換,並根據所選配置將代碼推送到某個位置。通常,當我想在開發以外的其他版本上運行這些構建時,我會從命令行調用構建腳本。儘管我儘可能努力,但有時我自己(以及在解決方案中工作的其他人)會意外地將配置保留在他們不想要的配置中 - 也許他們將其切換到「分段」配置以查看代碼如何用其特定的預處理器指令進行查看。然後他們打開了「F5」,認爲他們正在開發中進行調試......並且意外推出破壞的代碼。有什麼方法可以防止意外構建錯誤的Visual Studio配置?

所以問題是,有沒有辦法讓構建腳本綁定到配置上,但是不允許IDE的某些配置的構建?或者彈出警告?或者我是否以這種錯誤的方式開始?

回答

3

要讓分期構建失敗,除非它是一個團隊建設,你應該能夠使用

<Error 
    Text="No Staging builds except on the Team Build server" 
    Condition=" '$(IsDesktopBuild)'=='true' And $(Configuration)='Staging' " /> 

CruiseControl.NET也通過獨特的屬性的MSBuild,所以類似的想法會在其中的一個工作IsDesktopBuild的地方。

我不知道的在Visual Studio生成和命令行的MSBuild一個之間的默認屬性的任何差異,但如果你能忍受一點點額外的輸入,這應該做的工作

<Error 
    Text="You didn't say the magic word" 
    Condition=" '$(MagicWord)'!='please' And $(Configuration)='Staging' " /> 

那麼

msbuild /p:Configuration=Staging /p:MagicWord=please 

Visual Studio將不包含額外的屬性,因此構建將失敗。

+0

+1,我們做了類似的工作,效果很好。 – si618 2009-02-27 02:52:12

相關問題