我終於設法使用MSDeploy.exe工作。我發現使用「/ p:DeployOnBuild = true」但沒有「/ p:PublishProfile」運行msbuild實際上不會發布移動服務,但會創建包含內容的文件夾,並可以使用msdeploy發佈。
步驟應遵循使用msdeploy發佈移動服務:
在構建過程:
- 添加/號碼:DeployOnBuild = true來的msbuild命令建立移動服務
- 發佈文件夾在obj \ Release \ Package中創建。該文件夾包含PackageTmp文件夾以及一些應該在發佈期間使用的文件(.cmd,.xml,.zip)。但是我無法使用這些文件。在我的情況下,PackageTmp文件夾是我需要的,我將這個文件夾複製到構建過程的輸出。
在出版過程:
- (僅一次)下載發佈配置文件(.publishsettings文件)從Azure管理門戶的移動服務(提供鏈接儀表盤選項卡上)
- 運行批處理哪些運行msdeploy.exe:
@echo off
if "%MSDeployPath%" == "" (
for /F "usebackq tokens=1,2,*" %%h in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy" /s ^| findstr -i "InstallPath"`) do (
if /I "%%h" == "InstallPath" (
if /I "%%i" == "REG_SZ" (
if not "%%j" == "" (
if "%%~dpj" == "%%j" (
set MSDeployPath=%%j
))))))
"%MSDeployPath%"\msdeploy.exe -verb:sync -source:contentPath=<path_to_PackageTmp_folder> -dest:ContentPath=<mobile_service_site>,PublishSettings=<path_to_downloaded_publishsettings_file>,AuthType='Basic' -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension
或者,可以以壓縮提到PackageTm的內容p文件夾成一個zip和發佈行更改爲:
"%MSDeployPath%"\msdeploy.exe -verb:sync -source:package=<path_to_zip_file> -dest:ContentPath=<mobile_service_site>,PublishSettings=<path_to_downloaded_publishsettings_file>,AuthType='Basic' -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension
有幾次我不得不發佈後重新啓動移動服務。可以通過Azure CLI輕鬆完成。
希望以上可以幫助別人,想:-)
自動移動服務部署的過程,幫助過我的文章誰把一切做到:Azure Mobile Service deployment with Team City part 4. Deploying Azure Mobile Services
謝謝您的回答。然而,它看起來像兩篇文章描述JavaScript後端,而不是。網絡後端:-( –
有關.NET後端明確的文章,請參閱http://blogs.msdn.com/b/azuremobile/archive/2014/02/21/mobile-services-net-support-source-control .aspx –
我已經嘗試了上面文章中描述的方法,所有的git命令都應該在解決方案目錄中執行,所以它們使用移動服務源,而不是編譯後的二進制文件,在我的例子'git push origin master'中執行了msbuild,這就是我想要避免的。 我認爲目前沒有隻能在二進制文件上運行的發佈方法,類似於雲服務。 無論如何,我要感謝Adrian的支持。:-) –