![](/img/trans.png)
[英]How to deploy Azure WebJob using different configurations for different environments in Visual Studio
[英]Deploy Azure WebJob using VSTS
我在使用Visual Studio Team Services(VSTS)部署Azure WebJob時遇到了一些問題。
WebJob似乎已成功部署,但它破壞了托管在同一App Service中的Azure網站! 如果我使用VS2013部署,我沒有這個問題。
這是我的構建任務,它生成WebJob部署包:
這是我的部署任務:
部署Azure WebJob時沒有錯誤。 如果我去Azure門戶,我看到WebJob就在那里,它運行成功。 WebJob文件按預期復制到wwwroot\\App_Data\\jobs\\triggered\\RemoveExpiredDids
文件夾中,但問題是其他一些文件將被復制到wwwroot\\App_Data\\bin
文件夾中,這會破壞已部署到的現有網站那個App服務!!!
所以我決定找出為什么會發生這種情況。 下載並解壓縮部署包后,我看到有2個文件夾( app_data
和bin
)和調度程序文件( settings.job
):
這解釋了為什么某些程序集被copped到App Service的wwwroot\\App_Data\\bin
中。 奇怪的是,從VS2013部署時不會發生這種情況! 我查看了MSBuild日志,找到了以下行:
由於跳過指令“SkipBinFolderOnDeploy”,跳過了對象dirPath([app service name] \\ bin)。
總結一下,從VSTS部署Azure WebJob時會包含bin
文件夾,但從VS2013部署它時會被排除。
所以我的問題是: 如何在使用VSTS時阻止部署bin
文件夾? 是否有任何MSBuild參數/標志來執行此操作?
請參閱以下方法將webjob部署到azure:
/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\\\WebJob" /p:DeployDefaultTarget=WebPublish
) $(System.DefaultWorkingDirectory)/WebJobVnext/drop/WebJob
); 內容: bin
) $(System.DefaultWorkingDirectory)/[artifact name] /drop/WebJob
) 我終於能夠解決它,感謝@ starain-MSFT指出我正確的方向。 不過,我不得不做一些小改動。 這是創建部署包的任務:
MSBuild參數:
/ p:DeployOnBuild = true / p:WebPublishMethod = FileSystem / p:DeployDefaultTarget = WebPublish / p:Configuration = $(BuildConfiguration)/ p:OutputPath =。\\ bin \\ /p:publishUrl="$(build.artifactstagingdirectory)\\temp \\ WebJob”
這里與@ starain-MSFT答案的區別在於我必須添加/p:OutputPath=
參數,否則我會收到以下錯誤:
未為項目設置OutputPath屬性
生成包后,我刪除bin
文件夾並壓縮它(這減少了構建時間)。
這是我的部署任務:
請注意, $(DeploymentPackagePath)
是包含部署包的zip文件的路徑,如前所述。 將軟件包部署為zip文件或者解壓縮並部署文件夾無關緊要,它可以兼顧兩種方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.