.NET 6 不支持 .NET Standard 2.1?
我剛剛將一個項目從 .NET 5 更新到 .NET 6。它可以在本地完美編譯和執行。當我將其推送到 azure 並執行我的 CI 管道時,會報告一個錯誤:
NU1202:MyStandardPackaged 1.0 包與 net60 (.NETFramework,Version=v6.0) 不兼容。包 MyStandardPackaged 1.0 支持:netstandard2.1 (.NETStandard,Version=v2.1)
是否有解決方法,或者我必須更新這個聲明 .NET 6 的包?
如果您非常仔細地查看您發布的錯誤消息:
NU1202:MyStandardPackaged 1.0 包與 net60 (.NETFramework,Version=v6.0) 不兼容。包 MyStandardPackaged 1.0 支持:netstandard2.1 (.NETStandard,Version=v2.1)
請注意,它說的
net6.0是.NETFramework,Version=v6.0。但是,.NET 6 實際上是.NETCoreApp,Version=v6.0.因此,我得出的結論是,您正在使用一些甚至不了解 .NET 5 的舊版本 NuGet 來恢復您的項目/解決方案。
我的建議是避免
NuGetCommandAzure DevOps 中的任務。我想不出任何使用它的理由,CI 腳本所需的所有重要功能都存在於dotnetCLI 和MSBuild.exe.因此,如果您的解決方案/repo 中的所有項目都是 SDK 樣式(包含
Sdk="whatever"在項目文件中),則使用dotnet restore. 如果您甚至有一個非 SDK 樣式的項目(.cs目錄中的每個項目都列在 XML 中),那麼請使用msbuild -t:restore. 這樣,您將永遠不會再遇到 NuGet 版本不匹配的問題。