2012-02-01 112 views
1

我正在使用具有多個項目(常規程序集,ASP.NET MVC項目,Windows Azure項目和SQL項目)的VS2010解決方案。我想弄清楚如何設置一個TFS構建定義來部署Windows Azure項目和SQL項目。如何在解決方案中構建多個項目,每個項目都有不同的目標?

我知道如何進行Windows Azure部署,並在執行部署的Windows Azure項目文件(.ccproj)中有一個自定義生成任務。我可以輕鬆創建一個針對.ccproj文件運行的構建定義,並將一些MSBuild命令行參數作爲參數傳遞,並按預期工作。

我可以創建另一個針對SQL項目(.sqlproj)文件運行的構建定義,傳遞給MSBuild構建和發佈SQL項目所需的構建目標和參數。這按預期工作。

作爲兩個不同的構建定義,我的工作。很簡單。

我還沒有弄清楚如何將這兩個構建定義合併爲一個。這甚至可能(沒有很多工作)?理想情況下,我可以啓動一個新的構建,構建項目並將它們作爲單個工作單元的一部分進行部署(就像它們作爲單獨的構建定義一樣)。

我已經使用該解決方案文件作爲建項目嘗試,並指定創建目標爲/噸:<項目>:<目標>; <項目>:<目標>。但是,顯然這種語法只適用於基本集合中的目標,而不適用於任何自定義目標或由其他.targets文件導入的目標(或者這是我的理解)。

什麼是最好的(最簡單的)方式來完成我期待做的事情?

回答

3

當然你完全可以做到這一點!基本上,你需要在每個項目中有一個同名的目標。然後,您更改每個DependsOn列表以包含項目特定的目標列表。例如:

項目1:

<Target Name="MyBuild" DependsOnTargets="AzureTarget1,AzureTarget2" /> 

項目2:

<Target Name="MyBuild" DependsOnTargets="SQLTarget1,SQLTarget2" /> 

那麼你可以告訴構建定義的基礎上每個MyBuild目標,它應該調用適當的DependsOn目標。

這是一個非常簡單的如何做到這一點的示例,但是如果您還使用MSBuild Traversal項目和MSBuild遍歷任務,就可以使其更加健壯,這與下面的文章「Building Large Source Trees「部分:

http://msdn.microsoft.com/en-us/magazine/dd483291.aspx#id0100082

相關問題