Azure Devops - 在 Nuget 包中从 .NET Core 3.1 迁移到 .NET 5 的兼容性问题

Posted

技术标签:

【中文标题】Azure Devops - 在 Nuget 包中从 .NET Core 3.1 迁移到 .NET 5 的兼容性问题【英文标题】:Azure Devops - Compatibility problems moving from .NET Core 3.1 to .NET 5 at Nuget Package 【发布时间】:2020-11-15 08:28:54 【问题描述】:

我有一个 .NET Core 解决方案,使用 .NET Core 3.1 在 Azure Devops 上使用管道运行良好。管道上一切正常。

从 .NET Core 3.1 迁移到 .NET 5.0 后,我开始在运行管道时遇到一些奇怪的问题,尤其是使用 Nuget 包时。

我可以毫无问题地构建,但是当它开始使用 Nuget 包打包时,我遇到了这个错误:

[错误] nuget 命令失败,退出代码 (1)

NU1202:包 Microsoft.EntityFrameworkCore 5.0.0 与 net50 (.NETFramework,Version=v5.0) 不兼容。包 Microsoft.EntityFrameworkCore 5.0.0 支持:netstandard2.1 (.NETStandard,Version=v2.1)

一个奇怪的事实是这个解决方案在本地机器上运行良好。

<PropertyGroup>
  <TargetFramework>net5.0</TargetFramework>
  <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  <Version>1.8.8.9</Version>
  <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>

我已经尝试在 Build 上更改操作系统,但出现此错误:

当前可用的 MSBuild 版本是 16.7.0.37604。将 global.json 中指定的 .NET Core SDK 更改为需要当前可用的 MSBuild 版本的旧版本。

有人有想法吗?

【问题讨论】:

【参考方案1】:

包 Microsoft.EntityFrameworkCore.Relational 5.0.0 支持: netstandard2.1 (.NETStandard,Version=v2.1)

这是因为它使用的是旧版本的 Nuget。您可以尝试将其更改为 5.x 并恢复。

这里有一个case,你可以参考类似的问题。

【讨论】:

nuget update -self 如果使用具有 cmd、终端或 powershell 访问权限的构建环境,则可以解决问题。 如何进入此设置对话框? @DanielB,这是一个名为 NuGet 工具安装程序的 Azure DevOps Pipelines 任务。 我添加了- task: NuGetToolInstaller@1 inputs: versionSpec: 5.x,但它不起作用。我仍然遇到同样的错误。 奇怪。添加此任务后,我仍然收到该警告。

以上是关于Azure Devops - 在 Nuget 包中从 .NET Core 3.1 迁移到 .NET 5 的兼容性问题的主要内容,如果未能解决你的问题,请参考以下文章

Azure Devops 私有构建代理在 nuget 还原任务中失败

将 Nuget 包从本地 TFS2017 发布到 azure DevOps

Azure DevOps 项目管道无法从不同项目中的工件源访问 NuGet 包

如何在 Azure Devops 中使用 msbuild 创建具有发布和调试配置的 nuget 文件

Azure DevOps NuGet Feed 消费者步入源代码

带有 NuGet 上游源的 Azure DevOps Artifacts 源的安装包失败