如何在不預編譯的情況下使用命令行msbuild部署VS2012網站項目?
我繼承了一個非常大的 VS2012 網站項目(不是 Web 應用程序),並且正在嘗試自動化它的部署。項目中有大量循環引用,因此要使用 aspnet_compiler.exe 對其進行預編譯,我必須打開固定名稱。問題在於它會導致在我的四核、16gb 記憶體、ssd 開發人員機器上建構大約需要 20 分鐘。以前的開發人員不必處理這個問題,因為他只需將整個原始碼複製到生產 Web 伺服器。
因此,在我解決循環引用問題之前,我想至少使用 msdeploy 自動部署項目。我可以在 Visual Studio 中使用發布配置文件,它完全符合我的要求:
- 建構引用的 DLL 並將它們添加到項目中。
- web.config 是否轉換。
- 甚至不嘗試建構網站,而只是為我打包成一個 zip 文件。
我一生無法弄清楚的是如何讓 MSBuild.exe 做同樣的事情!
MSBuild.exe WebProject.vs2012.sln /m /T:Build /p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy上面的命令仍然嘗試執行 aspnet_compiler 這不是我想要的。發布配置文件說它不應該被預編譯……但在日誌中我看到它正在執行它。
那麼:如何在不預編譯的情況下使用 msbuild 部署網站項目?
對於網站項目,發布過程不涉及建構過程。對於網站項目,由於沒有正式的建構過程,我們沒有什麼可以真正擴展的。
注意:以下內容需要 VS 2012(或 VS2010)和Azure SDK。這些功能不包含在 VS2012 的 RTM 中。
在 VS 中創建發布配置文件後,將創建以下內容:
- App_Data/PublishProfiles 下的發布配置文件(.pubxml 文件)
- A
website.publishproj在網站的根目錄中的目的
website.publishproj是方便命令行發布。.csproj/.vbproj它是您在使用 Web 應用程序項目時通常會得到的填充物。如果您想自動發布,可以使用如下命令。
msbuild.exe website.publishproj /p:DeployOnBuild=true /p:PublishProfile=<profile-name-no-extension> /p:VisualStudioVersion=11.0您不必指定呼叫的目標。
關於 VS 中顯示該站點正在預編譯的消息,這是一個錯誤。它通過預編譯執行,但發布使用配置文件中的設置。該錯誤應該已在Visual Studio Update 1中修復。安裝後,您應該看不到不必要的預編譯步驟。如果您仍然看到,請告訴我。