ニュース
Microsoft、やっかいな「NuGet」の依存性競合を手軽に解決するツールを発表
開発ツール部門と「Microsoft Research」の共同開発
2024年1月19日 06:45
米Microsoftは1月16日(現地時間)、パッケージ管理システム「NuGet」の依存性競合を手軽に解決するツール「NuGetSolver」を発表した。「Visual Studio 2022」に対応する拡張機能で、現在「Visual Studio Marketplace」から無償でダウンロードできる。
「NuGet」は、.NET開発で広く用いられているパッケージ管理システム。ライブラリやフレームワークをコマンドだけでインストール、アップデート、削除できる。必要だが欠けているパッケージをプロジェクトへ自動で追加する「依存性の解決」にも対応しており、いまやアプリ開発に欠かせない存在だ。
しかし、複数のプロジェクトにまたがって複雑な依存関係があると、「NuGet」でも依存性の解決に失敗してしまうことがある。そうすると、開発者は手作業による競合の解決を強いられることになる。
そこで同社の開発ツール部門が研究機関「Microsoft Research」との共同で開発したのが、「NuGetSolver」だ。このツールはプロジェクト内の「NuGet」依存関係の競合を自動的に解決し、プロセスを簡素化することを目的としており、以下の一般的なエラーや警告を勝手に修正してくれる。
- NU1107:パッケージ間の依存性制約を解決できない
- NU1202:依存パッケージにプロジェクトと互換性のあるアセットが含まれていない
- NU1605:依存パッケージが最終的に解決されたリストアよりも高いバージョンのパッケージのバージョン制約を指定した
- NU1701:PackageTargetFallback/AssetTargetFallbackがパッケージからアセットを選択するために使用された
利用方法は簡単で、ソリューションエクスプローラーの右クリックメニューから依存関係の競合を解決コマンドを実行するだけだ。あとは「NuGetSolver」が問題を調査して解決のための提案を生成し、現在の状態と比較して表示する。問題がなければ修正を適用し、ソリューションを再構築すればよい。
万が一「NuGetSolver」の修正案に問題があった場合に備えて、リポジトリのソース管理(「Git」など)を有効にしておくとよいだろう。
なお、本ツールにはいくつかの制約があるので注意。
代表的なものとしては、マルチフィードとローカルパッケージフィードはサポートされておらず、「nuget.org」のみが利用できる。マルチターゲットなどの一部機能も、まだ完全にサポートされていない。また、提案したパッケージバージョンに脆弱性があるかどうかまで「NuGetSolver」は考慮しないので、開発者が自身で確認する必要がある。
ソフトウェア情報
- 「NuGetSolver tool」
- 【著作権者】
- Microsoft DevLabs
- 【対応OS】
- (編集部にてWindows 11で動作確認)
- 【ソフト種別】
- フリーソフト
- 【バージョン】
- 1.0(24/1/17 )