[英]NuGet Restore Fails - .NET 7.0 compatibility with .NET Standard 2.0
我有一个 .NET 7.0 ASP.NET 项目的解决方案,该项目在同一解决方案中的 .NET 标准 2.0 库中有一个项目参考。 在我的机器上所有构建和执行都很好。
我在 Azure DevOps 中有一个管道,用于构建项目并旨在将 ASP.NET 项目部署到服务器。 在构建之前,它运行任务NuGetCommand@2
以针对**/*.sln
执行 NuGet 恢复。 这是在windows-2022
Azure VM 映像上运行的。
由于以下错误,恢复炸弹:
Package Microsoft.OpenApi 1.4.3 is not compatible with net70 (.NETFramework,Version=v7.0). Package Microsoft.OpenApi 1.4.3 supports: netstandard2.0 (.NETStandard,Version=v2.0)
Errors in D:\a\1\s\MyApp.csproj
Project MyLibrary is not compatible with net70 (.NETFramework,Version=v7.0). Project MyLibrary supports: netstandard2.0 (.NETStandard,Version=v2.0)
这对我来说就像是在说您不能在 .NET 7.0 项目中使用 .NET 标准 2.0 库,但兼容性文档似乎另有说明。 这里发生了什么?
12/3更新
在调查和参考这个问题的过程中,我发现了这张票Github_Nuget_Tool_Cache_issue#16800 ,更多的开发人员对这种设计行为感到困惑。
到目前为止,唯一的解决方法似乎是额外安装6.4.x
。
您还可以提出功能请求票以引起更多关注,以便将来对此行为进行更新。
================================================ ==============
12/1 的原始帖子
我用nuget tool installer
任务安装了最新的nuget
版本的6.4.0.123
来确保Microsoft.OpenApi 1.4.3与.net7.0的兼容性。
================================================ ====
12月2日更新
从Microsoft.OpenAPI.1.4.3的源码页面来看,这个版本是为了兼容 DotNet 7.0 而设计的。
在调查过程中,我查看了调试日志,发现 nuget 还原任务在 window-2022 中使用4.x
的缓存版本。 我想这个版本肯定与 do.net 70 不兼容。
所以我想 nuget 版本可能是导致不同行为的关键。 (甚至可能是设计使Nuget 4.1
无法识别Microsoft.OpenAPI1.4.3
和Do.net 7.0
之间的兼容性)
参考
基于@Ceeno 的回答,但包括那些运行 YAML 管道的人。
我只是选择获取最新版本。
- task: NuGetToolInstaller@1
displayName: 'Update NuGet'
inputs:
checkLatest: true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.