使用 VSO 在同一个 sln 中部署 azure 网站和 webjobs - 错误 - 只能有一个

Deploy azure website and webjobs in same sln using VSO - Error - There can be only one

我在同一个 sln 中访问了一个网站和一个 webjob 项目:

Sritt 的属性中有一个具有以下设置的 webjobs-list.json

"WebJobs": [
    {
      "filePath": "../Sritt.WebJob/Sritt.WebJob.csproj"
    }

我已经像这样配置了 VSTS 构建(使用新的构建系统):​​

Solution: **\*.sln    
MSBuild Args: /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"

在 VSTS 中构建时出现以下警告:

 C:\a\s\packages\Microsoft.Web.WebJobs.Publish.1.0.9\tools\webjobs.console.targets(149,5): warning : WebJob schedule for SrittWebJob will not be created. WebJob schedules can only be created when the publish destination is an Azure Website [C:\a\s\Sritt.WebJob\Sritt.WebJob.csproj]

并出现以下错误:

packageFile= Find-Files -SearchPattern C:\a\a\**\*.zip
packageFile= C:\a\a\Sritt.WebJob.zip C:\a\a\Sritt.zip
Found more than one file to deploy with search pattern 'C:\a\a\**\*.zip'. There can be only one.  

如何同时部署网站和网络作业?我需要将它们分成不同的解决方案吗?

该错误与 WebJob 的发布无关,而是与 Azure 调度程序更改的发布有关。通常,已知来自 msbuild 的 Azure Schedule 配置存在问题,因此不再推荐。

相反,建议的方法是使用新的基于 WebJobs cron 的计划,它没有这些问题。有关设置的更多详细信息,请参阅 docs(非常简单)。

您似乎正在使用 "Azure Web App Deployment" 任务来部署项目。您不需要将它们拆分成不同的解决方案,但您需要将它们部署在单独的任务中。

因此您需要在构建定义中再添加一项 "Azure Web App Deployment" 任务。除了 "Web Deploy Package" 部分外,这两个任务的设置几乎相同: 一个是“$(build.artifactstagingdirectory)\**\Sritt.zip”,另一个是“$(build.artifactstagingdirectory)\**\Sritt.WebJob.zip”.