2011-12-23 132 views
3

我們有幾個使用msdeploy「手動」部署的Web服務。我們從適當的_PublishedWebsites\<<ProjectName>>_Package目錄中的TFS2010生成機器中選取部署軟件包。使用TFS構建多個Web部署包裝

我們現在想要用部署工具包裝部署包,以便安裝人員更輕鬆地查看參數。

我們想要做的是構建各個Web服務部署包,讓部署包着陸在正確的位置以部署工具構建,然後構建部署工具構建工具並複製先前的將生成的部署包複製到生成機器上的同一個Binaries拖放文件夾中。

由於某種原因,這似乎難以置信地難以做到。

的事情,我們已經試過

  • 設置位置,其中包將在Web服務項目的包中創建 /發佈使用一個變量(例如$(TargetDir))的Web項目設置。 Visual Studio將解釋輸入的變量並將其替換爲開發機器的硬編碼路徑......這就是構建機器的原因。在構建機器上,最終的結果是......沒有;部署包仍然發送到_PublishedWebsites\<<ProjectName>>_Package

  • /p:PackageLocation設置爲TFS構建定義「Process」/「Advances」部分的MSBuild Arguments設置之一,除/p:CreatePackageOnPublish=true /p:DeployOnBuild=true之外。這一切都爲生成錯誤:

    MSB1008: Only one project can be specified. Switch: p:PackageLocation=$(BinariesRoot)\DeploymentFiles For switch syntax, type "MSBuild /help"

    大概是因爲那裏是構建生成多個部署包。

任何意見讚賞!我們是否以這種錯誤的方式去做?我們是否應該改變構建XAML來迎合這個問題(例如this page suggests另一個問題)?

回答

2

夫婦準備爲你考慮:

1 - 改變TFS工作流程,就像你描述的執行一些複製任務

2 - 創建你的標準包裝步驟複製後運行MSBuild項目從_PublishedWebsites輸出到你選擇的一些位置

3 - 構建包時更改包放置位置覆蓋下面的MSBuild參數:

<DefaultPackageOutputDir Condition="'$(DefaultPackageOutputDir)'==''">$(OutDir)[YourDesiredLocation]\$(DefaultMSDeployDestinationApplicationName)\Package</DefaultPackageOutputDir> 

注意,您可以在

c:\program files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets 

我最近實施的建議#2,在客戶端,使用自定義的MSBuild項目文件中的#3建議的MSBuild覆蓋,看看您可以使用的一套包裝的MSBuild參數它的工作就像一個魅力。

+0

酷!感謝您的建議,尼克。我稍後會嘗試... – 2012-01-18 19:10:52