.NET 6 不支持 .NET Standard 2.1?

.NET 6 does not support .NET Standard 2.1?

我刚刚将一个项目从 .NET 5 更新到 .NET 6。它在本地编译和运行完美。当我将它推到天蓝色时,运行 我的 CI 管道,报告错误:

NU1202: Package MyStandardPackaged 1.0 is not compatible with net60 (.NETFramework,Version=v6.0). Package MyStandardPackaged 1.0 supports: netstandard2.1 (.NETStandard,Version=v2.1)

是否有解决方法,或者我必须更新此包以声明 .NET 6?

如果您仔细查看您发布的错误消息:

NU1202: Package MyStandardPackaged 1.0 is not compatible with net60 (.NETFramework,Version=v6.0). Package MyStandardPackaged 1.0 supports: netstandard2.1 (.NETStandard,Version=v2.1)

请注意,net6.0.NETFramework,Version=v6.0。然而,.NET 6 实际上是 .NETCoreApp,Version=v6.0.

因此,我断定您正在使用一些甚至不了解 .NET 5 的旧版本 NuGet 来恢复您的 project/solution。

我的建议是避免 Azure DevOps 中的 NuGetCommand 任务。我想不出有什么理由使用它,CI 脚本所需的所有重要功能都存在于 dotnet CLI 和 MSBuild.exe.

因此,如果您的solution/repo中的所有项目都是SDK风格的(项目文件中包含Sdk="whatever"),则使用dotnet restore。如果您甚至只有一个非 SDK 样式的项目(目录中的每个 .cs 都列在 XML 中),那么请使用 msbuild -t:restore。这样,您就再也不会遇到 NuGet 版本不匹配的问题了。