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 文件