検索
ニュース

Microsoft、「Visual Studio」でNuGetの依存関係の問題解決を支援するツールを公開実験的な拡張機能「NuGetSolver」

Microsoftは、「Visual Studio」でNuGetパッケージの依存関係の競合に対処するための実験的な拡張機能「NuGetSolver」を公開した。

Share
Tweet
LINE
Hatena

 Microsoftは2024年1月16日(米国時間)、「Visual Studio 2022」でNuGetパッケージの依存関係の競合に対処するための実験的な拡張機能「NuGetSolver」を公開した。

 NuGetは、広く使われている.NET用パッケージマネジャー。NuGetSolverは、プロジェクトにおけるNuGetパッケージの依存関係の競合を自動的に解決することを目的としており、以下のような最も一般的なNuGetエラーや警告に効率的に対処する。

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

NuGetSolverを使用するには

 NuGetSolverは、Visual Studio Marketplaceからダウンロード、インストールできる。Visual Studioのソリューションエクスプローラーで右クリックし、「Resolve Dependency Conflicts」(依存関係の競合を解決)を選択して起動する。

NuGetSolverの起動(提供:Microsoft)
NuGetSolverの起動(提供:Microsoft)

 NuGetSolverは依存関係を調査し、競合を解決する提案を生成できるかどうかを計算する。提案を生成すると、現在の状態と提案を表示する。

現在の状態と提案を表示(提供:Microsoft)
現在の状態と提案を表示(提供:Microsoft)

 提案が満足のいくものなら、「Apply fix」をクリックして適用し、ソリューションを再構築して、依存関係の競合が解決されたかどうかを確認する。

 なお、Microsoftは、リポジトリのソース管理を有効にすることを推奨している。そうすれば、NuGetSolverによる変更を、必要に応じて簡単に元に戻せるためだ。

 NuGetSolverは、ソリューションに依存関係の競合がない場合でも実行可能であり、変更を最小限に抑えながら依存関係をアップグレードする。NuGet Package Managerを使ってパッケージを1つずつアップグレードするのは時間がかかり、他の依存関係の制約で失敗することもあるため、NuGetSolverはより効率的な代替手段になると、Microsoftは説明している。

NuGetSolverの使用における注意点

 NuGetSolverは実験的な拡張機能であり、さまざまな制約がある。その一部を以下に示す。

  • 現在サポートされているのはnuget.orgフィードのみであり、ソリューションのnuget.configファイルのソースが以下のようになっていることを確認する必要がある
nuget.configファイルの内容(提供:Microsoft)
nuget.configファイルの内容(提供:Microsoft)
  • マルチフィードとローカルパッケージフィードはサポートされていない
  • NuGetSolverはコンパイル時の依存関係の競合を解決する可能性があるが、実行時エラーが発生する可能性は残る
  • NuGetSolverは現在、提案に含まれるバージョンに既知の脆弱(ぜいじゃく)性があるかどうかを検証していない。NuGetの監査機能がこの問題への対処に役立つ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る