Azure 网站的项目中不存在目标“ResolveWebJobFiles”

The target “ResolveWebJobFiles” does not exist in the project in Azure Website

我有一个 Windows Azure 项目,包含

我希望将这 2 个控制台应用程序部署为 Azure 网站的 Azure WebJobs。所以我右击 ASP.NET 项目并选择 Add |作为 Azure WebJob 的现有项目,并按正确的时间表添加了两个控制台应用程序。

一切似乎都很好,2 个控制台应用程序现在包含一个带有时间表的 JSON,并且 ASP.NET 项目包含一个带有 WebJobs 定义的 JSON。所有项目构建都很好。

问题是,当我尝试将 ASP.NET 项目部署到 Azure 时,我得到

The target “ResolveWebJobFiles” does not exist in the project

当作者通过添加

解决了这个问题时,我找到了this article
<Import Project="..\packages\Microsoft.Web.WebJobs.Publish.1.0.2\tools\webjobs.targets" Condition="Exists('..\packages\Microsoft.Web.WebJobs.Publish.1.0.2\tools\webjobs.targets')" />

到他的 csproj 文件,但是我的 ASP.NET 项目的 csproj 文件已经包含这个导入。

知道问题出在哪里吗?

我也运行喜欢这个。更新我的解决方案中的所有包后,我开始得到这个。 <import /> 在那里,但指向不同的版本。所以也检查一下。

即使我也遇到过这个问题。我在我的网络作业中重新安装了以下软件包来解决它

包 id="Microsoft.Web.WebJobs.Publish" 版本="1.0.2"

检查您的 webjob 项目 Properties 文件夹中是否有此文件: webjob-publish-settings.json

如果没有,请使用此内容创建它,仅更改 webJobName(目前)

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "MyWebJobName",
  "startTime": "2014-12-09T00:00:00-08:00",
  "jobRecurrenceFrequency": "Hour",
  "interval": 1,
  "runMode": "Scheduled",
  "stopping_wait_time": 3600
}

我最近收到此错误,发现原因是 [WebProject]/Properties/webjobs-list.json 包含对已从解决方案中删除的旧 webjob 的引用。从 json 中删除引用解决了问题。

在我的例子中是这个文件,它有 1 个与之关联的无效网络作业,将其删除并开始工作

webjobs-list.json

一个主要原因可能是属性中缺少 "webjob-publish-settings.json" 文件。

请仔细检查此文件是否存在并包含在您的项目中。

还值得检查的是 WebJob 项目的 .net 版本与您的 Web 应用程序!

the documentation

所述

A WebJobs-enabled project has the following items added to it:
- The Microsoft.Web.WebJobs.Publish NuGet package.
- A webjob-publish-settings.json file that contains deployment and scheduler settings.

它明确表示需要引用 Microsoft.Web.WebJobs.Publish Nuget 包的项目是 Webjob-enabled 项目应用程序,而不是 Web 应用程序。 Web 应用程序只需要 webjobs-list.json 个文件。

webjob 控制台应用程序也可能有一个 webjob-publish-settings.json 文件 但仅限于非连续作业

在 Kudu 中(在 Web 应用程序管理页面的“高级工具”下,在“开发工具”下),在“调试控制台”下,select“Powershell”,然后导航到“站点”文件夹,然后是“存储库”文件夹。

在命令行输入命令“dotnet restore”,然后重新部署。

编辑:截至 2022 年 1 月 26 日仍然有效。