packages.config
NuGet 用の .NET の古いシステムでは、Package 要素の属性を使用して、パッケージの更新時に考慮されるパッケージの可能なバージョンを制限できました。allowedVersions
<package id="Newtonsoft.Json" version="10.0.3" allowedVersions="[10.0.3]" />
update-package
上記を含むプロジェクトの Visual Studio 内で を実行すると、属性を使用して 10.0.3 に固定しているため、更新は行われませんNewtonsoft.Json
。allowedVersions
でこれを達成するにはどうすればよいPackageReference
ですか? Version 属性にsemver構文を適用すると、復元されたバージョンにのみ影響します。更新は制限されません。したがって、以下を指定してPackageReference
実行するupdate-package
と、たとえば、11.0.1 が NuGet リポジトリにある場合、11.0.1 にアップグレードされます。
<PackageReference Include="Newtonsoft.Json" Version="[10.0.3]" />
バックグラウンド
パッケージの更新にはコマンド ライン ツールを使用しています。これは、高速で移動する内部パッケージ (1 日に複数回更新) と、より安定した移動の少ないパッケージ (例: ASP.NET) の両方があるためです。大規模なコードベースでは、ファイル内の各依存関係を手作業で更新すること.csproj
は、単純にスケーラブルではありません (そしてエラーが発生しやすくなります)。その下packages.config
で、アップグレードしたくないサードパーティのパッケージを「固定」し、最新の急速に変化する依存関係に更新することもできます。