从 .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
没有。