NuGet 错误 NU1011

不允许集中定义的浮动包版本。

问题

默认情况下, <PackageVersion /> 项不能包含浮动版本。 NuGet 的中央包管理 (CPM) 被视为一项企业级功能,它可提供更轻松的大规模版本管理,以及确定性还原和安全还原。 使用浮动版本可能会导致在将无效包推送到源后将其引入到生成中。 这可能会导致你未在存储库中进行任何更改,但突然出现中断的情况,且在不删除浮动版本或推送已修复的较新版本包的情况下便无法恢复到正常状态。 使用非浮动版本意味着对包的每个升级都由存储库中的提交提供支持,以便轻松确定导致中断的原因,并还原提交以重新恢复为正常状态。

可传递固定功能旨在允许你显式覆盖图中的可传递版本,从而实现更多控制。 将浮动版本用作覆盖可能会使不同项目的还原最终包含应固定包的不同版本,从而违背使用中央版本的承诺。

NuGet 建议使用 Dependabot 等自动化功能使包版本保持最新状态,从而提供简化的包更新方式,同时集成到拉取请求、自动化生成验证以及由存储库中提交提供支持的测试所有内容功能的现有开发人员工作流。

解决方案

建议将浮动版本更改为 非浮动版本范围。 如果不可能,可以通过设置 MSBuild 属性来启用 CPM 的浮动版本:

<PropertyGroup>
  <CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>