从 Visual Studio 发布到 Azure 时"The target 'AddScheduledJob' does not exist in the project"



我的解决方案包含一个主 Web 应用,并附加了多个 Azure Web 作业。当我去发布主 Web 应用程序时,我收到此错误:

[project_path][project_name].csproj(0,0): Error MSB4057: The target "AddScheduledJob" does not exist in the project.

我不确定AddScheduledJob是从哪里来的。它不是解决方案中任何项目的名称。

我想我已经找到了"尝试"引用此幻影项目的文件:

[solution_path]packagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets

此文件包含以下文本片段:

<Target Name="AddScheduledJob"
DependsOnTargets="$(AddScheduledJobDependsOn)"
AfterTargets="MSDeployPublish"
Condition="'$(FilePreview)' == 'false' and ('$(WebJobPublishFromWAP)' == 'true' or '$(_DestinationType)' == 'AzureWebSite')">
<CreateScheduledWebJob JobConfig="@(JobConfig)"  
WebSiteName="$(WebSiteName)" 
WebSiteUrl="$(WebSiteUrl)"
ManagementUri="$(WebJobManagementUri)"
ManagementCertificatePath="$(ManagementCertificatePath)"
ManagementCertificatePassword="$(ManagementCertificatePassword)"
ManagementCertificate="$(ManagementCertificate)"
ManagementToken="$(ManagementToken)"
PublishSettingsPath="$(PublishSettingsPath)"
SubscriptionId="$(SubscriptionId)"
Condition="'%(RunMode)' == 'Scheduled'"/>

我不知道这是从哪里来的,或者为什么它会导致问题。我很想删除该片段,但在文件顶部,我阅读了以下片段:

WARNING:  DO NOT MODIFY this file, this file is added to your project automatically...

我可以安全地从"webjobs.console.targets"文件中删除此代码段吗?或者,是否还有其他事情正在发生?

更新

我发现即使出现此错误,我的 Web 应用程序也已成功发布。以下是发布过程结束时日志的更深入视图:

Adding ACLs for path (ringclone-test/App_Data)
Publish Succeeded.
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(25,3): Warning MSB4011: "C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplicationsMicrosoft.WebApplication.targets" cannot be imported again. It was already imported at "C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.12toolswebjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:APDRingCloneTicketProcessorTicketProcessor.csproj]
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(25,3): Warning MSB4011: "C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplicationsMicrosoft.WebApplication.targets" cannot be imported again. It was already imported at "C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.12toolswebjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:APDRingCloneTicketDistributorTicketDistributor.csproj]
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(25,3): Warning MSB4011: "C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplicationsMicrosoft.WebApplication.targets" cannot be imported again. It was already imported at "C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.12toolswebjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:APDRingCloneArchiveIndexerArchiveIndexer.csproj]
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(25,3): Warning MSB4011: "C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplicationsMicrosoft.WebApplication.targets" cannot be imported again. It was already imported at "C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.1.0toolswebjobs.console.targets (24,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:APDRingCloneStarterStarter.csproj]
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(25,3): Warning MSB4011: "C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplicationsMicrosoft.WebApplication.targets" cannot be imported again. It was already imported at "C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.1.0toolswebjobs.console.targets (24,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:APDRingCloneNrtTriggerNrtTrigger.csproj]
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(25,3): Warning MSB4011: "C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplicationsMicrosoft.WebApplication.targets" cannot be imported again. It was already imported at "C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.12toolswebjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:APDRingCloneDownloadProcessorDownloadProcessor.csproj]
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(25,3): Warning MSB4011: "C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplicationsMicrosoft.WebApplication.targets" cannot be imported again. It was already imported at "C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.1.0toolswebjobs.console.targets (24,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:APDRingCloneDatabaseReIndexerDatabaseReIndexer.csproj]
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(110,5): Error : An error occurred while creating the WebJob schedule: Webjob configuration is missing metadata for StartTime
C:APDRingCloneDailyMaintenanceDailyMaintenance.csproj(0,0): Error MSB4057: The target "AddScheduledJob" does not exist in the project.
C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.7toolswebjobs.console.targets(25,3): Warning MSB4011: "C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0WebApplicationsMicrosoft.WebApplication.targets" cannot be imported again. It was already imported at "C:APDRingClonepackagesMicrosoft.Web.WebJobs.Publish.1.0.12toolswebjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:APDRingCloneScheduledTriggerScheduledTrigger.csproj]

如您所见,它说"发布成功",然后抱怨其中一个作业的"开始时间"。然后抱怨"添加计划作业"。我不关心"开始时间"问题。我可以解决这个问题。但是关于名为"AddScheduledJob"的项目的错误令人困惑。即使发布似乎发生了,我也不希望此错误弄乱日志。导致此错误的原因是什么?

这是一个古老的NuGet包。在旧版本中,如果将 Web 作业配置为按计划运行而不是连续运行,Visual Studio 将允许您配置 Web 作业的计划。您可以删除该目标并使用以下指南配置计划:https://learn.microsoft.com/en-us/azure/app-service/web-sites-create-web-jobs#CreateScheduledCRON 。如果您使用的是旧版本的 Visual Studio,请升级,以便拥有最新的 Web Job 项目模板。

首先,必须从 Nuget 添加Microsoft.Web.WebJobs.Publish包。即使 VS 具有"发布到 Web 作业"操作,也不会自动将该包添加到项目中。 你可以参考这个博客。

一旦你添加它,你仍然被搞砸了。VS 不会自动修改您的.csproj文件以使用此包。 为此,您需要手动破解.csproj文件。最简单的方法是在 VS 中卸载它,并在 CSharp 目标之后添加以下行 - 我在下面包含了它作为上下文:

<Import Project="$(MSBuildToolsPath)Microsoft.CSharp.targets" />
<Import Project="..packagesMicrosoft.Web.WebJobs.Publish.1.0.11toolswebjobs.targets" 
Condition="Exists('..packagesMicrosoft.Web.WebJobs.Publish.1.0.11toolswebjobs.targets')" />

这是您的类似问题。当他在 asp.net 站点下添加新的 Web 作业时,请保留较新版本的Microsoft.Web.WebJobs.Publish包。

相关内容

最新更新