没有版本的 PackageReference 将引发错误

从 .NET 10 开始,如果 NU1015 项未指定版本,NuGet 将不再触发 PackageReference,而是引发 NU1604 错误。

使用中央包管理时没有变化,因为按照设计,PackageReference XML 不应在该方案中具有版本。

引入的版本

.NET 10

以前的行为

以前,NuGet 使用以下文本引发 NU1604 警告:

项目依赖项“PackageA”不包含包容性下限。 请在依赖项版本中包括下限,以确保一致的还原结果。

新行为

从 .NET 10 开始,NuGet 会引发 NU1015 错误,并显示以下文本:

以下 PackageReference 项未指定版本:PackageA

破坏性变更的类型

这是行为 变化

更改原因

“没有下限”的信息令人困惑,目前还不清楚如何解决此问题。 此外,NuGet 还原了该包的最低版本,这很少是开发人员想要的。 此更改在缺少版本元数据时提供更清晰、更可行的错误消息。

在包引用中添加一个版本,例如:

- <PackageReference Include="Some.Package" />
+ <PackageReference Include="Some.Package" Version="1.2.3" />

如果需要最低包版本,请使用 Version="0.0.0"。 在这种情况下,NuGet 将引发警告 NU1603,而不是以前的 NU1604。

若要还原到以前的警告,可以将SdkAnalysisLevel设置为9.0.300或更低。 但是,这将影响所有启用 SdkAnalysisLevel 的功能。

受影响的 API

没有。