下列 PackageVersion 項目無法指定浮動版本:PackageName。
問題
專案已設定為使用 NuGet Central 套件管理,並<PackageVersion />定義專案,指定 屬性的Version浮動版本值:
<ItemGroup>
<PackageVersion Include="PackageName" Version="1.*" />
</ItemGroup>
根據預設, <PackageVersion /> 項目無法指定浮動版本。
NuGet 的 中央套件管理 可讓使用者管理單一位置中的套件版本,以及決定性且安全的還原。
使用浮動版本,會導致將不正確的套件推送至摘要之後,將不正確的套件引入您的組建中。
這可能會導致您在存放庫中沒有進行任何變更,但突然因為新套件發生問題而中斷,而且您無法在不移除浮動版本或推送已修正的較新版本套件的情況下重新進入良好狀態。
使用非浮動版本表示每個升級套件都受到存放庫中的認可所支援,讓您輕鬆判斷造成中斷的原因,並可讓您還原認可以回到良好狀態。
此外,使用中央套件管理的可轉移釘選功能時,使用浮動版本做為覆寫,可能會讓不同專案的還原最終會針對應該釘選的套件使用不同的版本,因此會違反使用集中定義版本的承諾。
NuGet 建議您使用 Dependabot 之類的自動化,將套件版本保持在 up-to-date,以提供簡化的更新套件版本的方式,同時整合至提取要求的現有開發人員工作流程、自動化組建驗證,以及測試存放庫中認可所支援的所有專案。
解決方案
- 建議將浮動版本變更為 非浮動版本範圍:
<ItemGroup>
<PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
- 如果無法這麼做,或您想要搭配中央套件管理使用浮動版本,您可以藉由設定 MSBuild 屬性來執行此動作:
<PropertyGroup>
<CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>