NuGet パッケージ マネージャーを使用して Visual Studio にパッケージをインストールして管理する

Microsoft Visual Studio for Windowsで NuGet パッケージ マネージャー UI を使用すると、プロジェクトやソリューション内で NuGet パッケージを簡単にインストール、アンインストール、更新することができます。

この記事は Windows ユーザーのみを対象としています。 Visual Studio for Mac を使用している場合は、「プロジェクトに NuGet パッケージを含める」をご覧ください。

前提条件

  • Visual Studio 2022 for Windows と .NET 関連のワークロードをインストールします。

    visualstudio.microsoft.com から無料の 2022 Community Edition をインストールできます。また、Professional または Enterprise Edition をインストールすることもできます。

    Visual Studio 2017 以降では、.NET 関連のワークロードをインストールすると、NuGet パッケージ マネージャー も自動的にインストールされます。 Visual Studio インストーラー内で個別にインストールするには [個別のコンポーネント][コード ツール][NuGet パッケージ マネージャー]の順で選択します。

    Visual Studio 2015 内に NuGet パッケージ マネージャーが見当たらない場合は、[ツール] > [拡張機能と更新プログラム] を確認して、[NuGet パッケージ マネージャー] 拡張機能を検索してください。 Visual Studio 内で拡張機能のインストーラーを使用できない場合は、拡張機能を https://dist.nuget.org/index.html から直接ダウンロードしてください。

  • まだ持っていない場合は、nuget.org で無料アカウントを登録します。 NuGet パッケージをアップロードするには、その前にアカウントを登録する必要があります。

パッケージを検索してインストールする

Visual Studio で NuGet パッケージを検索してインストールするには、次の手順を行います。

  1. ソリューション エクスプローラーでプロジェクトを読み込み、[プロジェクト]>[NuGet パッケージの管理] を選択します。

    [NuGet パッケージ マネージャー] ウィンドウが開きます。

  2. [参照] には、現在選択されているソースから人気度順にパッケージが表示されます (「パッケージ ソース」を参照)。

    • 左上の検索ボックスを使用して、特定のパッケージを検索します。
    • 各パッケージ ID の横には、正しいパッケージの識別に役立つ縮約情報が表示される場合があり、選択したパッケージ ソースによって異なります。 たとえば、パッケージのダウンロード数、作成者、所有者プロファイルのハイパーリンクなどがあります。

    Note

    Visual Studio 17.11 以降では、選択したパッケージ ソースでサポートされている場合、パッケージ所有者はプロファイル ハイパーリンクで表示されます。 パッケージの所有権は、パッケージ ソースによって定義されます。 例は、「nuget.org でパッケージの所有者を管理する」を参照してください。

    Visual Studio 17.10 以前では、パッケージ 作成者 メタデータがプレーンテキストとして表示されます。 詳しい情報については、「メタデータ パッケージの作成者」を参照してください。

    • パッケージを選択すると、詳細なパッケージ情報が表示されます。 右側に詳細ウィンドウが表示され、インストールするバージョンを選択できます。 ブラウザーのタブが選択された NuGet パッケージ マネージャーのウィンドウを示すスクリーンショット。
  3. 右側のウィンドウのドロップダウン リストからバージョンを選択します。 バージョンの一覧にプレリリース バージョンも含めたいときは、[プレリリースを含める] を選択します。

  4. [インストール] を選択して、NuGet パッケージをインストールします。 ライセンス条項の同意やインストールの確認が求められる場合があります。

    Visual Studio によって、パッケージとその依存関係がプロジェクトにインストールされます。 インストールが完了すると、[インストール済み] のタブに追加されたパッケージが表示されます。パッケージの場所は、ソリューション エクスプローラーを使って、プロジェクトの [依存関係]>[パッケージ] ノードから見つけることもできます。 パッケージをインストールした後は、using ステートメントを使用してプロジェクト内のパッケージを参照できます。

  5. (省略可能)NuGet には、プロジェクトでパッケージを使用できる 2 つの形式があります。PackageReferencepackages.config です。既定の形式を設定するには、[ツール]>[オプション] を選択し、[NuGet パッケージ マネージャー] を展開し、[全般] を選択して、[既定のパッケージ管理形式] を選択します。 詳細については、「既定のパッケージ管理形式を選択する」を参照してください。

パッケージのアンインストール

NuGet パッケージをアンインストールするには、次の手順を行います。

  1. ソリューション エクスプローラーでプロジェクトを読み込み、[プロジェクト]>[NuGet パッケージの管理]を選択し、[インストール済み] を選択します。

  2. 左側のウィンドウでアンインストールするパッケージを選択し (必要に応じて検索ボックスを使用する)、右側のウィンドウから [アンインストール] を選択します。

    パッケージが選択され、[アンインストール] ボタンが強調表示されている NuGet パッケージ マネージャーを示すスクリーンショット。

パッケージを更新する

NuGet パッケージをアップデートするには、次の手順を行います。

  1. ソリューション エクスプローラーでプロジェクトを読み込み、[プロジェクト]>[NuGet パッケージの管理] を選択します。 Web サイトのプロジェクトの場合は、最初に Bin フォルダーを選択します。

  2. [更新]を選択して、選択したパッケージ ソースから使用可能な更新プログラムがあるパッケージを確認します。 [プレリリースを含める] を選択して、更新リストにあるプレリリース パッケージを含めます。

  3. 選択してパッケージを更新する 右側のウィンドウで、ドロップダウン リストから目的のバージョンを選択し、[更新] を選択します。

    パッケージが選択され、[更新] ボタンが強調表示されている NuGet パッケージ マネージャーを示すスクリーンショット。

  4. 一部のパッケージでは、[更新] のボタンが無効になり、次のメッセージが表示されます。SDK があるパッケージを参照しています。パッケージを更新するには、パッケージが属する SDK を更新してください。このメッセージは、パッケージが大きいフレームワークや SDK の一部となっていて、個別に更新できないことを示します。 このようなパッケージは、内部的に <IsImplicitlyDefined>True</IsImplicitlyDefined> とマークされています。 たとえば、Microsoft.NETCore.App は .NET Core SDK の一部であり、パッケージ バージョンは、アプリケーションによって使用されるランタイム フレームワークのバージョンとは異なります。 新しいバージョンの .NET Core をダウンロードするには、.NET Core のインストールを更新してください。 詳細については、「.NET Core メタパッケージとバージョン管理」を参照してください。 これは、一般的に使用されている次のパッケージに該当します。

    • Microsoft.AspNetCore.All
    • Microsoft.AspNetCore.App
    • Microsoft.NETCore.App
    • NETStandard.Library

    [更新] ボタンが無効になっている NuGet パッケージを示すスクリーンショット。

  5. 複数のパッケージを最新バージョンに更新するには、NuGet パッケージの一覧でパッケージを選択し、[更新] を選択します。

  6. また、[インストール済み] のタブから別々にパッケージを更新することもできます。この場合、[バージョン][プレリリースを含める]の順に選択してください。

ソリューションのパッケージの管理

ソリューションのパッケージの管理は、複数のプロジェクトを同時に操作するための便利な手段です。

  1. ソリューション マネージャーでソリューションを選択し、[ツール]>[NuGet パッケージ マネージャー]>[ソリューションでNuget パッケージを管理] を選択します。

  2. [ソリューションでNuget パッケージを管理]のウィンドウでプロジェクトを選択して、プロジェクトを操作することができます。

    複数のプロジェクトが選択されている [ソリューションでパッケージを管理] ウィンドウを示すスクリーンショット。

[統合] タブ

開発者は通常、同じソリューション内のさまざまなプロジェクト間で同じ NuGet パッケージの異なるバージョンを使用することは不適切であると考えています。 Visual Studio では、NuGet パッケージに共通バージョンを使用できます。 これを行うには、NuGet パッケージ マネージャーのウィンドウの[統合]を選択して、それぞれバージョン番号を持つパッケージがソリューション内の異なるプロジェクトのどこで使用されているかを検出します。

[統合] タブが選択されている [ソリューションでパッケージを管理] ウィンドウを示すスクリーンショット。

この例では、ClassLibrary1 プロジェクトが EntityFramework 6.2.0 を使用しているのに対して、ConsoleApp1 は EntityFramework 6.1.0 を使用しています。 複数のパッケージ バージョンを統合するには、次の手順を実行します。

  1. [統合] のタブにあるプロジェクトの一覧から、更新するプロジェクトを選択します。

  2. [バージョン] の一覧にある、すべてのプロジェクトに使用できるバージョン選択します。

  3. [インストール] を選択します。

    NuGet パッケージ マネージャーによって、選択されたすべてのプロジェクトに対して、選択されたパッケージ バージョンがインストールされます。パッケージは [統合] タブ上には表示されなくなります。

パッケージ ソース

Visual Studio では、パッケージ ソースの順序は無視され、最初に要求に応じたソースからパッケージが使用されます。 詳しくは、パッケージの復元に関する記事をご覧ください。 特定のソースからパッケージを読み込む方法については、「パッケージ ソースマップ」をご覧ください。

NuGet パッケージ ソースを管理するには、次の手順を行います。

  1. Visual Studio でパッケージのメタデータを読み込んだソースを変更するには、パッケージソースのセレクターからソースを選択します。

    パッケージ ソースのセレクターが強調表示されているスクリーンショット。

  2. パッケージ ソースを管理するには、[設定] を選択して [ツール]>[オプション]を選択します。

    パッケージ ソースの [設定] アイコンが強調表示されているスクリーンショット。

  3. [オプション] のウィンドウで、[NuGet パッケージ マネージャー] のノードを展開し、[パッケージ ソース] を選択します。

    パッケージ ソースが選択されている [オプション] ウィンドウを示すスクリーンショット。

  4. ソースを追加するには、+ を選択して、名前を編集し、[ソース] に URL またはパスを入力して、[更新] を選択します。

    すると [パッケージ ソース] のドロップダウン リストにソースが表示されます。

  5. パッケージ ソースを変更するには、それを選択して [名前][ソース] ボックス内で編集を行い、[更新] を選択します。

  6. パッケージ ソースを無効にするには、一覧内で名前の左側にあるボックスをオフにします。

  7. パッケージ ソースを削除するには、パッケージ ソースを選択してから、X ボタンを選択します。

    削除後にパッケージ ソースが再表示される場合は、コンピューター レベルまたはユーザー レベルの NuGet.config ファイルに含まれている可能性があります。 こういったファイルの場所については、一般的な NuGet 構成に関するページを参照してください。 手動で編集、または、nuget sources コマンドを使用して、ファイル内のパッケージ ソースを削除します。

NuGet パッケージ マネージャーの [オプション] の操作

パッケージを選択すると、NuGet パッケージ マネージャーには、バージョン の下に展開可能なオプション が表示されます。 多くの種類のプロジェクトでは、[プレビュー ウィンドウの表示] しか選択できません。

展開された NuGet パッケージ マネージャーの [オプション] の操作を示すスクリーンショット。

次に、オプションでできることについて説明します。

インストールと更新のオプション

以下は、特定のプロジェクトでのみ使用できます。

  • [依存関係の動作] では、インストールする依存パッケージのバージョンが NuGet によってどのように決定されるかを設定します。 具体的には次のような設定ができます。

    • [依存関係を無視する] では、依存関係のインストールをスキップします。通常は、パッケージのインストールが中断されます。
    • [最低] (既定値) では、選択された主要なパッケージの要件に合う最小のバージョン番号を使用して、依存関係がインストールされます。
    • [最高のパッチ] では、メジャーおよびマイナーのバージョン番号が同じで、パッチ番号が最も大きいバージョンがインストールされます。 たとえば、バージョン 1.2.2 が指定された場合、1.2 から始まる最高のバージョンがインストールされます
    • [最高のマイナー] では、メジャーのバージョン番号が同じで、マイナー番号とパッチ番号が最も大きいバージョンがインストールされます。 バージョン 1.2.2 が指定された場合、1 から始まる最高のバージョンがインストールされます
    • [最高] では、使用可能な最高のパッケージ バージョンがインストールされます。
  • [ファイルの競合時のアクション] では、プロジェクト内またはローカル コンピューター上に既に存在するパッケージを NuGet ではどのように処理するべきかを指定します。 具体的には次のような設定ができます。

    • [プロンプト] では、既存のパッケージを保持するか上書きするかを尋ねるように NuGet に指示します。
    • [すべて無視] では、すべての既存のパッケージの上書きをスキップするように NuGet に指示します。
    • [すべて上書き] では、すべての既存のパッケージを上書きするように NuGet に指示します。

アンインストールのオプション

以下は、特定のプロジェクトでのみ使用できます。

  • [依存関係の削除]: 選択すると、プロジェクト内の他の場所で参照されていない場合は、依存パッケージがすべて削除されます。

  • [依存関係が存在する場合でも強制的にアンインストールする]: 選択すると、プロジェクト内でまだ参照されている場合でも、パッケージがアンインストールされます。 これは通常、パッケージとそれによってインストールされたあらゆる依存関係を削除するために、[依存関係の削除] と組み合わせて使用されます。 ただし、このオプションを使用すると、プロジェクト内での参照が壊れてしまう場合があります。 このような場合、必要に応じてその他のパッケージを再インストールする必要があります。

関連項目

NuGet の詳細については、次の記事を参照してください。