代码之家  ›  专栏  ›  技术社区  ›  Matt Spinks

从Visual Studio发布到Azure时,“项目中不存在目标”“AddScheduleJob”“。”

  •  1
  • Matt Spinks  · 技术社区  · 6 年前

    我的解决方案包括一个主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]\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.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:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(25,3): Warning MSB4011: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" cannot be imported again. It was already imported at "C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\APD\RingClone\TicketProcessor\TicketProcessor.csproj]
    C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(25,3): Warning MSB4011: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" cannot be imported again. It was already imported at "C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\APD\RingClone\TicketDistributor\TicketDistributor.csproj]
    C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(25,3): Warning MSB4011: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" cannot be imported again. It was already imported at "C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\APD\RingClone\ArchiveIndexer\ArchiveIndexer.csproj]
    C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(25,3): Warning MSB4011: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" cannot be imported again. It was already imported at "C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.1.0\tools\webjobs.console.targets (24,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\APD\RingClone\Starter\Starter.csproj]
    C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(25,3): Warning MSB4011: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" cannot be imported again. It was already imported at "C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.1.0\tools\webjobs.console.targets (24,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\APD\RingClone\NrtTrigger\NrtTrigger.csproj]
    C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(25,3): Warning MSB4011: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" cannot be imported again. It was already imported at "C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\APD\RingClone\DownloadProcessor\DownloadProcessor.csproj]
    C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(25,3): Warning MSB4011: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" cannot be imported again. It was already imported at "C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.1.0\tools\webjobs.console.targets (24,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\APD\RingClone\DatabaseReIndexer\DatabaseReIndexer.csproj]
    C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(110,5): Error : An error occurred while creating the WebJob schedule: Webjob configuration is missing metadata for StartTime
    C:\APD\RingClone\DailyMaintenance\DailyMaintenance.csproj(0,0): Error MSB4057: The target "AddScheduledJob" does not exist in the project.
    C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.7\tools\webjobs.console.targets(25,3): Warning MSB4011: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" cannot be imported again. It was already imported at "C:\APD\RingClone\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.console.targets (25,3)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\APD\RingClone\ScheduledTrigger\ScheduledTrigger.csproj]
    

    如你所见,它写着“发布成功”,然后抱怨其中一个工作的“开始时间”。然后抱怨“addScheduleJob”。我不关心“开始时间”的问题。我可以把它修好。但是这个名为“addScheduleJob”的项目的错误令人费解。即使发布似乎发生了,我也不希望这个错误把日志弄乱。是什么导致了这个错误?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Mehdi Ibrahim    6 年前

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

        2
  •  0
  •   Joey Cai    6 年前

    首先,你必须添加 Microsoft.Web.WebJobs.Publish Nuget的包裹。即使VS有“发布到Web作业”操作,它也不会自动将该包添加到项目中。你可以参考这个 blog .

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

    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    <Import Project="..\packages\Microsoft.Web.WebJobs.Publish.1.0.11\tools\webjobs.targets" 
    Condition="Exists('..\packages\Microsoft.Web.WebJobs.Publish.1.0.11\tools\webjobs.targets')" />
    

    这里有一个类似的 issue 与你。当他在asp.net站点,保留较新版本的 微软.WebJobs.发布