2013-07-17 94 views
5

我試圖通過TFS作爲構建的一部分在Visual Studio 2012解決方案中部署雙網站項目。我們處於兩臺不同的Web服務器WIP(正在進行中)和DEV的時間點。TFS/MSBuild構建/發佈web部署不會轉換web.config文件

我們希望將不同的連接字符串部署到任一服務器,以便它們可以連接到不同的數據庫。我們已經使用Visual Studio在開發機器上測試了我們的解決方案以及所有配置,當任何Web項目發佈時,當我們檢查Web服務器時,web.config連接字符串按預期進行了轉換。

構建在使用默認調試解決方案配置的WIP服務器上正常工作。 TFS Build中的配置是Any CPU | Debug。

對於下一個配置(DEV),我們確信Web項目都通過Visual Studio 2012發佈到Web服務器,並且web.config文件轉換。

但是,當我們使用MSBuild參數運行DEV構建時,我們注意到沒有轉換髮生。我們已經將構建的Items to Build部分中的配置發送到:Any CPU | Dev。

/p:VisualStudioVersion=10.0 /p:DeployOnBuild=True;PublishProfile=app.ui.dev.pubxml /p:DeployTarget=MsDeployPublish /p:MsDeployServiceUrl=https://server-dev-hrtech:8172/MSDeploy.axd /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=WMSVC /p:AllowUntrustedCertificate=True /p:Username=username /p:Password=password /p:_WPPCopyWebApplication=True /p:PipelineDependsOnBuild=False 

當我們在構建日誌和輸出目錄 - 我們可以看到編譯的程序集在obj/Debug目錄,而不是obj/Dev目錄我們預料的要。在日誌中,我們可以清楚地看到/p:Configuration="Dev",正如我們所期望的那樣。

底線是發佈的web.config,最終在Web服務器上是Debug配置(即未轉換)的默認web.config文件。就好像MSBuild無法看到在解決方案的參數中傳遞的配置參數。

我現在已經嘗試從我的開發機器上的命令行運行msbuild,試圖理解爲什麼會發生這種情況。

通過剝開那些通過TFS構建發送的MSBuild的參數,我可以看到,這並不改變web配置:

msbuild "app-no database.sln" /t:app_ui:Rebuild /P:TransformConfigFiles=true /p:Configuration=Dev /p:Platform="Any CPU" /p:MSDeployServiceUrl=https://app-dev-hrtech:8172/MSDeploy.axd /p:Username=username /p:Password=password /p:DeployOnBuild=True /p:PublishProfile=app.ui.dev.pubxml /p:VisualStudioVersion=11.0 > build.log 

我可以修改這一點,使用的MSBuild建設項目文件直。我發現下面的命令不會轉換web.config文件已發佈應用程序:

msbuild app.ui\app.ui.csproj /p:Configuration=Dev /p:MSDeployServiceUrl=https://app-dev-hrtech:8172/MSDeploy.axd /p:Username=username /p:Password=password /p:DeployOnBuild=True /p:PublishProfile=app.ui.dev.pubxml /p:VisualStudioVersion=11.0 /p:AllowUntrustedCertificate=True > build.log 

的問題是,這將是很難的TFS的一部分運行建立,他們是多個項目的一些網站和其他人的Windows服務器等

如何使用第一個命令,但修改它,以便它正確地轉換Web項目?

正如你所看到的,我已經創建了一些發佈配置文件,因此它們可能會在TFS Build中用於MSBuild參數。

PS:我們正在使用Visual   Studio   2012,TFS 2010,Windows 2008R2服務器和Windows   7用於開發機器。

回答

1

我遇到過這個問題,關於如何通過發佈配置文件發佈網站,這個article是我見過的最好的一個。

對於您的情況,您似乎需要將配置文件的名稱與配置名稱相同,例如,使用Dev.pubxml和Web.Dev.config。

+0

奇怪。那麼這解決了我的問題!我有一個名爲「Deploy」的配置文件,我的配置名稱是「Release」。 –

0
/p:DeployOnBuild=True;PublishProfile=app.ui.dev.pubxml 

我不認爲.pubxml應該在配置文件的末尾。 應該是這樣的

/p:DeployOnBuild=True;PublishProfile=app.ui.dev 
0

我剛剛有這個問題。檢查了MSBuild日誌,檢查了本地ZIP包,檢查了Web Deploy推送到遠程IIS,並且它始終使用默認配置文件!

原來,我正在查看檢查我的QA設置的XML塊是否缺少xdt:Transform="Replace"屬性!

希望這可以幫助別人。

相關問題