NuGet 错误 NU1011

以下 PackageVersion 项不能指定浮动版本:PackageName。

问题

项目配置为使用 NuGet Central 包管理,并且定义了一个<PackageVersion />项,该值指定属性的Version浮动版本值:

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.*" />
</ItemGroup>

默认情况下, <PackageVersion /> 项无法指定浮动版本。 NuGet 的 中央包管理 使用户能够在单个位置管理包版本以及确定性和安全还原。 使用浮动版本可能会导致在将无效包推送到源后将其引入到生成中。 这可能会导致存储库中没有进行更改的情况,但突然由于新包中存在问题而中断,并且无法恢复良好状态,而无需删除浮动版本或推送已修复的包的较新版本。 使用非浮动版本意味着对包的每个升级都由存储库中的提交提供支持,从而轻松确定导致中断的原因,并允许还原提交以重新进入良好状态。

此外,当使用中央包管理的可传递固定功能时,使用浮动版本作为替代,可能会使不同项目的还原最终具有应固定的包的不同版本,从而违背使用集中定义版本的承诺。

NuGet 建议使用 Dependabot 等自动化来保持包版本 up-to日期,该版本提供一种简化的更新包版本的方式,同时集成到现有开发人员工作流中的拉取请求、自动化生成验证,以及测试存储库中的提交所支持的所有内容。

解决方案

<ItemGroup>
  <PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
  • 如果不可能,或者想要将浮动版本与中央包管理配合使用,可以通过设置 MSBuild 属性来执行此作:
<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>