使用VSTS部署Azure WebJob

Rui*_*mba 9 msbuild azure visual-studio azure-webjobs azure-devops

我在使用Visual Studio Team Services(VSTS)部署Azure WebJob时遇到了一些问题.

WebJob似乎已成功部署,但它破坏了托管在同一App Service中的Azure网站!如果我使用VS2013部署,我没有这个问题.

这是我的构建任务,它生成WebJob部署包:

构建任务 - 生成Azure WebJob部署包

这是我的部署任务:

部署WebJob任务

部署Azure WebJob时没有错误.如果我去Azure门户,我看到WebJob就在那里,它运行成功.WebJob文件wwwroot\App_Data\jobs\triggered\RemoveExpiredDids按预期复制到文件夹中,但问题是其他一些文件将被复制到该wwwroot\App_Data\bin文件夹中,这将破坏已部署到该App Service中的现有网站!

所以我决定找出为什么会发生这种情况.下载并解压缩部署包后,我看到有2个文件夹(app_databin)和调度程序文件(settings.job):

WebJob部署包

这解释了为什么有些程序集被应用到wwwroot\App_Data\binApp Service中.奇怪的是,从VS2013部署时不会发生这种情况!我查看了MSBuild日志,找到了以下行:

由于跳过指令"SkipBinFolderOnDeploy",跳过了对象dirPath([app service name]\bin).

总结bin一下,从VSTS部署Azure WebJob时会包含文件夹,但在从VS2013部署Azure WebJob时会将其排除在外.

所以我的问题是:如何bin在使用VSTS时阻止部署文件夹?是否有任何MSBuild参数/标志来执行此操作?

sta*_*SFT 2

参考以下方法将webjob部署到azure:

  1. 修改 Visual Studio 构建任务以使用文件系统部署 webjob (MSBuild 参数/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\WebJob" /p:DeployDefaultTarget=WebPublish:)
  2. 添加删除文件任务到发布定义以删除 bin 文件夹(源文件夹:)$(System.DefaultWorkingDirectory)/WebJobVnext/drop/WebJob;内容:bin
  3. 修改 Azure 应用服务部署任务(1. 取消选中使用 Web 部署发布选项。2. 包或文件夹$(System.DefaultWorkingDirectory)/[artifact name] /drop/WebJob:)