Microsoft、「Visual Studio」でNuGetの依存関係の問題解決を支援するツールを公開:実験的な拡張機能「NuGetSolver」
Microsoftは、「Visual Studio」でNuGetパッケージの依存関係の競合に対処するための実験的な拡張機能「NuGetSolver」を公開した。
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は依存関係を調査し、競合を解決する提案を生成できるかどうかを計算する。提案を生成すると、現在の状態と提案を表示する。
提案が満足のいくものなら、「Apply fix」をクリックして適用し、ソリューションを再構築して、依存関係の競合が解決されたかどうかを確認する。
なお、Microsoftは、リポジトリのソース管理を有効にすることを推奨している。そうすれば、NuGetSolverによる変更を、必要に応じて簡単に元に戻せるためだ。
NuGetSolverは、ソリューションに依存関係の競合がない場合でも実行可能であり、変更を最小限に抑えながら依存関係をアップグレードする。NuGet Package Managerを使ってパッケージを1つずつアップグレードするのは時間がかかり、他の依存関係の制約で失敗することもあるため、NuGetSolverはより効率的な代替手段になると、Microsoftは説明している。
NuGetSolverの使用における注意点
NuGetSolverは実験的な拡張機能であり、さまざまな制約がある。その一部を以下に示す。
- 現在サポートされているのはnuget.orgフィードのみであり、ソリューションのnuget.configファイルのソースが以下のようになっていることを確認する必要がある
- マルチフィードとローカルパッケージフィードはサポートされていない
- NuGetSolverはコンパイル時の依存関係の競合を解決する可能性があるが、実行時エラーが発生する可能性は残る
- NuGetSolverは現在、提案に含まれるバージョンに既知の脆弱(ぜいじゃく)性があるかどうかを検証していない。NuGetの監査機能がこの問題への対処に役立つ
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Microsoft、パッケージマネジャー「NuGet 6.5」を公開 大規模プロジェクト向け機能を追加
Microsoftは2023年2月28日(米国時間)、オープンソースの.NET Frameworkパッケージマネジャー「NuGet 6.5」を公開した。 - Google、OSSパッケージの依存関係を可視化した実験的サービスを発表
Googleはオープンソースプロジェクトの依存関係などを可視化した実験的サービス「Open Source Insights」を提供開始した。「変更のペースが速く、ついていくのが難しい場合がある」「大きなプロジェクトが依存するソフトウェアパッケージが頻繁にアップデートされ、明確な現状把握ができない場合がある」といったOSSの課題を解消するのが目的だ。 - 毎日10個以上の悪意あるパッケージが「npm」「rubygems」経由で公開されている OSS脆弱性調査
アプリケーションセキュリティベンダーのMendが公開した調査レポートによると、2022年1〜9月に同社が把握したオープンソースソフトウェアの脆弱性は、前年同期比で33%増加した。