![](/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.