Dot-Net

.NET 6 不支持 .NET Standard 2.1?

  • December 6, 2021

我剛剛將一個項目從 .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 版本不匹配的問題。

引用自:https://stackoverflow.com/questions/70250523