ニュース

Microsoft、やっかいな「NuGet」の依存性競合を手軽に解決するツールを発表

開発ツール部門と「Microsoft Research」の共同開発

「NuGetSolver」v1.0

 米Microsoftは1月16日(現地時間)、パッケージ管理システム「NuGet」の依存性競合を手軽に解決するツール「NuGetSolver」を発表した。「Visual Studio 2022」に対応する拡張機能で、現在「Visual Studio Marketplace」から無償でダウンロードできる。

 「NuGet」は、.NET開発で広く用いられているパッケージ管理システム。ライブラリやフレームワークをコマンドだけでインストール、アップデート、削除できる。必要だが欠けているパッケージをプロジェクトへ自動で追加する「依存性の解決」にも対応しており、いまやアプリ開発に欠かせない存在だ。

 しかし、複数のプロジェクトにまたがって複雑な依存関係があると、「NuGet」でも依存性の解決に失敗してしまうことがある。そうすると、開発者は手作業による競合の解決を強いられることになる。

「NuGet」のエラー

 そこで同社の開発ツール部門が研究機関「Microsoft Research」との共同で開発したのが、「NuGetSolver」だ。このツールはプロジェクト内の「NuGet」依存関係の競合を自動的に解決し、プロセスを簡素化することを目的としており、以下の一般的なエラーや警告を勝手に修正してくれる。

  • NU1107:パッケージ間の依存性制約を解決できない
  • NU1202:依存パッケージにプロジェクトと互換性のあるアセットが含まれていない
  • NU1605:依存パッケージが最終的に解決されたリストアよりも高いバージョンのパッケージのバージョン制約を指定した
  • NU1701:PackageTargetFallback/AssetTargetFallbackがパッケージからアセットを選択するために使用された

 利用方法は簡単で、ソリューションエクスプローラーの右クリックメニューから依存関係の競合を解決コマンドを実行するだけだ。あとは「NuGetSolver」が問題を調査して解決のための提案を生成し、現在の状態と比較して表示する。問題がなければ修正を適用し、ソリューションを再構築すればよい。

 万が一「NuGetSolver」の修正案に問題があった場合に備えて、リポジトリのソース管理(「Git」など)を有効にしておくとよいだろう。

「NuGetSolver」が提案する修正案の例

 なお、本ツールにはいくつかの制約があるので注意。

 代表的なものとしては、マルチフィードとローカルパッケージフィードはサポートされておらず、「nuget.org」のみが利用できる。マルチターゲットなどの一部機能も、まだ完全にサポートされていない。また、提案したパッケージバージョンに脆弱性があるかどうかまで「NuGetSolver」は考慮しないので、開発者が自身で確認する必要がある。

ソフトウェア情報

「NuGetSolver tool」
【著作権者】
Microsoft DevLabs
【対応OS】
(編集部にてWindows 11で動作確認)
【ソフト種別】
フリーソフト
【バージョン】
1.0(24/1/17 )