次の PackageVersion 項目では、浮動バージョン PackageName を指定できません。
問題点
プロジェクトは NuGet Central Package Management を使用するように構成され、<PackageVersion />
項目が定義され、Version
属性の浮動バージョン値が指定されます。
<ItemGroup>
<PackageVersion Include="PackageName" Version="1.*" />
</ItemGroup>
既定では、 <PackageVersion />
項目は浮動バージョンを指定できません。
NuGet の 中央パッケージ管理 を使用すると、ユーザーはパッケージバージョンを 1 つの場所で管理できるだけでなく、確定的で安全な復元を管理できます。
フローティング バージョンを使用すると、フィードにプッシュされた後に、不適切なパッケージがビルドに導入される可能性が生じます。
これにより、リポジトリに変更を加えずに、新しいパッケージの問題が原因で突然何かが壊れ、浮動バージョンを削除したり、固定されている新しいバージョンのパッケージをプッシュしたりすることなく、適切な状態に戻る方法がない可能性があります。
非フローティング バージョンを使用すると、パッケージへのすべてのアップグレードがリポジトリ内のコミットによってサポートされるため、中断の原因となった変更を簡単に特定でき、コミットを元に戻して適切な状態に戻すことができます。
また、中央パッケージ管理の推移的なピン留め機能を使用する場合、フローティング バージョンをオーバーライドとして使用すると、異なるプロジェクトの復元がパッケージに対して異なるバージョンになり、ピン留めされるはずのバージョンが異なる可能性があるため、一元的に定義されたバージョンを使用するという約束に反する可能性があります。
NuGet では 、Dependabot などの自動化を使用してパッケージ バージョンを up-to日付に保つことをお勧めします。パッケージ バージョンを更新しながら、プル要求の既存の開発者ワークフローに統合し、ビルド検証を自動化し、リポジトリ内のコミットによってバックアップされたすべてのテストを効率化できます。
解決策
- フローティング バージョンを 非浮動小数点バージョン範囲に変更することをお勧めします。
<ItemGroup>
<PackageVersion Include="PackageName" Version="1.0.0" />
</ItemGroup>
- これが不可能な場合、または中央パッケージ管理でフローティング バージョンを使用する場合は、MSBuild プロパティを設定してこれを行うことができます。
<PropertyGroup>
<CentralPackageFloatingVersionsEnabled>true</CentralPackageFloatingVersionsEnabled>
</PropertyGroup>