我在使用(VSTS)部署Azure WebJob时遇到了一些问题。
WebJob似乎部署成功,但它破坏了托管在同一个Azure!中的Azure网站,如果我使用VS2013进行部署,我没有这个问题。
这是生成WebJob部署包的构建任务:

这是我的部署任务:

部署Azure WebJob时没有错误。如果我访问Azure门户,我会看到WebJob在那里,它成功地运行了。WebJob文件按预期复制到wwwroot\App_Data\jobs\triggered\RemoveExpiredDids文件夹中,但问题是其他一些文件将复制到wwwroot\App_Data\bin文件夹中,这将破坏已经部署到该应用程序服务中的现有网站!
所以我决定找出为什么会发生这种事。在下载和提取部署包之后,我看到了两个文件夹(app_data和bin)和调度程序文件(settings.job):

这解释了为什么某些程序集被复制到App的wwwroot\App_Data\bin中。奇怪的是,在从VS2013部署时不会发生这种情况!我查看了MSBuild日志,发现了下面的一行:
对象dirPath (app服务名称\bin)跳过指令'SkipBinFolderOnDeploy‘。
最后,bin文件夹在从VSTS部署Azure WebJob时包括在内,但在从VS2013中部署它时被排除在外。
因此,我的问题是:bin如何防止文件夹在使用VSTS时被部署?是否有任何MSBuild参数/标志来执行此操作?
发布于 2017-08-16 01:56:41
请参考以下将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)发布于 2017-10-09 09:09:53
发布于 2017-10-10 07:56:49
我终于能修好它了,谢谢@starain-MSFT为我指明了正确的方向。不过,我得做些小小的改变。这是创建部署包的任务:

MSBuild参数:
/p:publishUrl="$(build.artifactstagingdirectory)\temp\WebJob“/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:DeployDefaultTarget=WebPublish /p:Configuration=$(BuildConfiguration) /p:OutputPath=.\bin\
与@starain答案相比,这里的不同之处在于,我必须添加/p:OutputPath=参数,否则将得到以下错误:
未为项目设置OutputPath属性
生成包后,我删除bin文件夹并将其压缩(这将减少构建时间)。
这是我的部署任务:

请注意,正如前面提到的,$(DeploymentPackagePath)是指向包含部署包的zip文件的路径。无论是将包部署为zip文件还是解压缩并部署文件夹,它都是双向工作的。
https://stackoverflow.com/questions/45688605
复制相似问题