【问题标题】:Azure DevOps Pipeline failing at NuGet restore taskAzure DevOps Pipeline 在 NuGet 还原任务中失败
【发布时间】:2020-09-28 09:55:30
【问题描述】:

我在 Visual Studio 2019 中创建了一个 Azure 函数项目。在我的桌面上一切正常,但该项目在 Azure DevOps Pipeline 中的 NuGet 还原任务失败,并出现以下错误。

包 Microsoft.Azure.WebJobs 3.0.0 与 netcoreapp3.1 不兼容

2020-06-09T08:32:02.2578449Z ##[错误] nuget 命令失败,退出代码 (1) 和错误(E:\agent_work\491\s\CPUSRETools\AzureCapacityUsage\AzureCapacityUsage.csproj 中的错误 包 Microsoft.Azure.WebJobs 3.0.0 与 netcoreapp3.1 (.NETCoreApp,Version=v3.1) 不兼容。包 Microsoft.Azure.WebJobs 3.0.0 支持:netstandard2.0 (.NETStandard,Version=v2.0) 包 Microsoft.Azure.WebJobs.Extensions 3.0.0 与 netcoreapp3.1 (.NETCoreApp,Version=v3.1) 不兼容。包 Microsoft.Azure.WebJobs.Extensions 3.0.0 支持:netstandard2.0 (.NETStandard,Version=v2.0) 包 Microsoft.Azure.WebJobs.Extensions.Http 3.0.0 与 netcoreapp3.1 (.NETCoreApp,Version=v3.1) 不兼容。包 Microsoft.Azure.WebJobs.Extensions.Http 3.0.0 支持:netstandard2.0 (.NETStandard,Version=v2.0) 一个或多个包与 .NETCoreApp 不兼容,Version=v3.1。)

2020-06-09T08:32:02.2592475Z ##[debug]Processed: ##vso[task.issue type=error;] nuget 命令失败,退出代码 (1) 和错误(E:\ 中的错误agent_work\491\s\CPUSRETools\AzureCapacityUsage\AzureCapacityUsage.csproj%0D%0A 包 Microsoft.Azure.WebJobs 3.0.0 与 netcoreapp3.1 (.NETCoreApp,Version=v3.1) 不兼容。包 Microsoft.Azure.WebJobs 3.0.0 支持:netstandard2.0 (.NETStandard,Version=v2.0)%0D%0A 包 Microsoft.Azure.WebJobs.Extensions 3.0.0 不兼容 netcoreapp3.1 (.NETCoreApp,Version=v3.1) . 包 Microsoft.Azure.WebJobs.Extensions 3.0.0 支持:netstandard2.0 (.NETStandard,Version=v2.0)%0D%0A 包 Microsoft.Azure.WebJobs.Extensions.Http 3.0.0 与 netcoreapp3 不兼容。 1 (.NETCoreApp,Version=v3.1)。包 Microsoft.Azure.WebJobs.Extensions.Http 3.0.0 支持:netstandard2.0 (.NETStandard,Version=v2.0)%0D%0A 一个或多个包不兼容使用 .NETCoreApp,版本=v3.1。)

2020-06-09T08:32:02.2594955Z ##[debug]任务结果:失败

2020-06-09T08:32:02.2595537Z ##[错误]包无法恢复

【问题讨论】:

  • 1) zimmergren.net/… 2) github.com/Azure/azure-webjobs-sdk/issues/2040 这两个链接都可以为您提供帮助。
  • 我还是有这个问题。正如您在链接中所建议的那样,我尝试使用 .NET Restore 而不是 NuGet Restore。还是类似的错误 C:\Program Files\dotnet\sdk\2.1.806\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(137,5): error NETSDK1045: The current .NET SDK does not支持面向 .NET Core 3.1。以 .NET Core 2.1 或更低版本为目标,或者使用支持 .NET Core 3.1 的 .NET SDK 版本。

标签: c# azure-devops nuget azure-functions azure-pipelines-release-pipeline


【解决方案1】:

从错误中可以看出 dotnet 任务使用的是 2.1.806 版本的 dotnet sdk。但是您的项目针对的是 dotnet 3.1。

您可以使用任务 Use .Net Core 在管道中使用特定版本的 .Net Core(版本 3.1)。见下文

- task: UseDotNet@2
  displayName: 'Use .NET Core sdk'
  inputs:
    packageType: sdk
    version: 3.x

- task: DotNetCoreCLI@2
    inputs:
      command: restore
      projects: '**\*.csproj'

【讨论】:

  • 非常感谢@Levi Lu。添加“使用 .NET Core sdk 3.x”和 dotnet restore 就可以了。但是,我构建解决方案文件的最后一步失败了。它无法获取任何引用错误:命名空间“Microsoft”中不存在类型或命名空间名称“Azure”(您是否缺少程序集引用?)
  • 如果你使用 vsbuild 任务来构建你的项目。您可以尝试将restoreNugetPackages 设置为true。或者您可以尝试使用 dotnet build task。
  • 我尝试了使用还原 NuGet 包选项的 VSBuild 任务。它失败并出现错误“'Restore NuGet Packages' 选项已弃用。要在构建中恢复 NuGet 包,请将 NuGet 工具安装程序任务添加到构建定义中。”另外,我尝试 dotnet build 它失败,出现多个错误,例如“名称空间 'Microsoft' 中不存在类型或名称空间名称 'Azure'(您是否缺少程序集引用?)”
【解决方案2】:

我设法找到解决我的问题的方法。 我有 9 个项目,我使用 VSBuild Task 构建得很好。一个项目未能在 VSBuild 任务中构建。因此,我将该任务移至新的解决方案。 将 VSBuild 指向具有 9 个项目的旧解决方案,并将 .NET 构建任务指向在 VSBuild 中失败的新解决方案文件。

现在世界再次变得丰富多彩。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2021-08-09
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多