NuGet パッケージの検索・確認の方法を学ぶ

.NETのプロジェクトを開始するときや、アプリやサービスの機能的価値を特定したいときには、基本的には既存の NuGet パッケージをインストールすることで、一からパッケージを作成する時間と手間を省くことができます。 既存のパッケージは、nuget.org のパブリック コレクションや、あなたの組織やサードパーティが提供している配布サイトから取得できます。

パッケージを検索する

パッケージは、直接 https://nuget.org/packages で探す他に、Visual Studio パッケージ マネージャー の UIパッケージ マネージャー コンソールで探すことができます。 (nuget.org で公開しているパッケージは、定期的にウイルススキャンが実行されています)。

nuget.org/packages を開くと、 NuGet のパッケージのリストが人気順で表示されます。これらのパッケージには、全ての種類の.NET フレームワークのパッケージが含まれます。 中には、あなたのプロジェクトに役立つものもあるでしょう。

Screenshot that shows the default view of nuget.org/packages with the most popular packages at the top.

パッケージを検索するには、ページの上部にある検索ボックスにパッケージ名または検索語句を入力します。 高度な検索構文を使用すれば、上手く検索結果を絞ることができます。

高度なフィルター処理と並べ替え

nuget.org/packages では、フィルター処理と並べ替えを上手く使用して検索結果を絞り込むことができます。

Screenshot that shows the filtering and sorting options on nuget.org.

フィルターでフレームワークの絞り込みをすれば、特定の .NET フレームワークを対象とするパッケージを表示できます (詳細については、「ターゲット フレームワーク」を参照してください)。

  • .NET Framework 生成チェックボックスのいずれかを選択すると、検索結果がフィルター処理され、その生成内の個々のターゲット フレームワークと互換性のあるパッケージが表示されます。 たとえば、選択すると.NET、次のような最新の .NET フレームワークnet5.0net8.0と互換性のあるパッケージが返されます。

    Screenshot that shows the Framework filters on nuget.org.

  • 右側の矢印を押して、フレームワークの世代を展開することで、それぞれのターゲット フレームワーク モニカー (TFM) が表示され、検索結果を絞り込むことができます。 たとえば、選択すると net5.0 、'.NET 5.0' フレームワークと互換性のあるパッケージが返されます。

  • 既定では、パッケージは、計算された互換性のあるフレームワークの展開された一覧によってフィルター処理されます。 明示的にターゲットとするアセット フレームワークによってパッケージをフィルター処理する場合は、[互換性のあるフレームワーク含める] チェックボックスの選択を解除します。

  • 複数のフレームワーク フィルターを組み合わせると、選択したすべてのフィルター (選択したフィルターの共通部分に含まれるパッケージ) に一致する検索結果が表示されます。 たとえば netcoreapp3.1net45 を一緒に選択すると、'.NET Core 3.1' と '.NET Framework 4.5' の両方を対象とするパッケージが表示されます。 また、フレームワークの世代 .NET Corenet45 の両方にチェックを入れると、'.NET Framework 4.5' と '.NET Core' TFM (netcoreapp1.0からnetcoreapp3.1) の最低一つを対象としたパッケージが表示されます。

    • または、いずれかのフレームワーク フィルターに一致するパッケージを表示する場合は、[フレームワーク フィルター モード] オプションの [任意] ラジオ ボタンを選択します。 次にnetcoreapp3.1net5.0、'.NET Core 3.1' または '.NET 5.0' をターゲットとするパッケージを選択して表示します。 netcoreapp3.1 チェックボックスと.NETフレームワーク生成チェックボックスを一緒に選択すると、'.NET Core 3.1' または 'のいずれかをターゲットとするパッケージが返されます。NET' TFM (net5.0スルーnet8.0)。
  • パッケージでサポートされているフレームワークとプロジェクト との互換性を確認する方法の詳細については、こちらをご覧ください。

また、フィルターの[パッケージの種類]を使用すれば、特定の種類のパッケージを表示できます。

  • すべての種類 既定ではこのフィルターにチェックがついています。種類に関係なくすべてのパッケージが表示されます。
  • 依存関係 プロジェクトにインストールできる通常の NuGet のパッケージが表示されます。
  • .NET ツール コンソール アプリ を含む .NET ツール のパッケージが表示されます。
  • テンプレートdotnet new コマンドを使用して、新しいプロジェクトの作成に活用できる .NET テンプレートが表示されます。

既定では、NuGet にはプレリリース版とベータ版を含むすべてのバージョンのパッケージが一覧で表示されます。 [オプション][プレリリースを含める] のチェックを外すことで、リリース済みの安定したパッケージのみを一覧で表示できます。

フィルターの条件を設定するには、[適用] を選択します。 既定の設定に戻すには、[リセット] を選択します。

ページの右上にある [並べ替え] を使用することで、さまざまな条件で表示順の設定ができます。

  • 関連性 既定ではこれに設定されています。内部のスコアリング アルゴリズムに従って、結果が表示されます。
  • ダウンロード 合計ダウンロード数の多い順で検索結果が表示されます。
  • 最新のアップデート 検索結果をパッケージのバージョンの作成日が最新のものから検索結果がされます。

検索構文

nuget.org でクエリの検索を NuGet CLI とVisual Studio から行う場合は、すべて同じ構文を使用します。 Azure Artifacts や GitHub パッケージ リポジトリなどの他のパッケージ ソースの場合は、異なる構文を使用する必要があったり、高度なフィルター処理がサポートされていないかもしれません。

  • 構文<property>:<term>を使用すれば、idpackageidversiontitletagsauthordescriptionsummary、のパッケージやownerプロパティを検索できます。

  • 検索はキーワード (keyword)と説明の部分に適用され、大文字と小文字は区別されません。 たとえば id プロパティを検索するために入力した次の文字列は、 nuget.core と同じものとみなします。

    id:NuGet.Core
    ID:nuget.core
    Id:NUGET.CORE

  • id プロパティは、文字列が部分的に一致したものを検索できるのに対し、packageidowner は、完全に一致したものを検索します(大文字と小文字を区別しない)。 次に例を示します。

    PackageId:jquery と入力すると、パッケージ ID がjquery であるものを正確に検索します 。
    一方 Id:jquery と入力すると、jquery の文字列を含むすべてのパッケージ ID を検索します 。

  • また、複数の値やプロパティを同時に検索することができます。 次に例を示します。

    id:jquery id:ui と入力すると、 id プロパティ内の複数の用語を検索します。
    id:jquery tags:validation と入力すると、複数のプロパティが検索されます。

  • サポートされていないプロパティは無視して検索されるため、 invalid:jquery ui と入力しても、uiと同じ扱いになり、 invalid:jquery と入力すると、すべてのパッケージが表示されます。

サポートされているフレームワークを見つける

NuGet でパッケージがプロジェクトにインストールされるのは、そのパッケージがサポートしている .NET Framework にプロジェクトのターゲット フレームワークが含まれている場合のみです。 パッケージに互換性がない場合、NuGet はエラーを表示します。

パッケージがサポートしているフレームワークを見つけるには、いくつか方法があります。

  • 検索ページでは、パッケージのサポートされているフレームワークが、パッケージ ID の下にバッジとして表示されます。 これらのバッジは、.NET、.NET Core、.NET Standard.NET Framework の世代でサポートされている最も低いフレームワーク バージョンを示しています。 パッケージは、表示されているバッジ バージョン以上のフレームワーク バージョンと互換性があります。

    "濃い青色" バッジは明示的にターゲット設定されたフレームワークを表し、'薄い青' バッジは計算された互換性のあるフレームワークを表します。

    バッジをクリックすると、nuget.org のパッケージの詳細ページにリダイレクトされます。 パッケージの ページの [フレームワーク] タブには、サポートされているフレームワークの完全な一覧が表示されます。

    Screenshot of the Framework badges on nuget.org's search page.

  • nuget.org 上のパッケージのページを開くと、サポートされているフレームワークがパッケージ ID の下と [フレームワーク] のタブに表示されますが、すべてのパッケージにサポートされているフレームワークが表示されるわけではありません。

    Screenshot of the Frameworks UI and tab on the package page at nuget.org.

  • [バージョン情報] にある [パッケージのダウンロード] を選択して、パッケージを手動でダウンロードします。 ダウンロードしたパッケージのファイル拡張子を .nupkg から .zip に変更し、.zip フォルダーを開き、その中の ライブラリフォルダーを調べます。 そこに、サポートされているフレームワークのサブフォルダーが表示されます。各サブフォルダーには、ターゲット フレームワーク モニカー (TFM) の名前が付けられています。 詳細については、ターゲット フレームワークに関するページを参照してください。 ライブラリ の中にサブフォルダーが存在せず、DLL が 1 つしかない場合は、パッケージをインストールして互換性を確認してください。

  • また、Visual Studio パッケージ マネージャー コンソール のInstall-Package を使用して、パッケージをプロジェクトにインストールしてみましょう。 パッケージに互換性がない場合は、パッケージがサポートしているフレームワークが表示されます。

プレリリース パッケージ

多くのパッケージの作成者は、継続的に改善を行いながら、最新リビジョンに対するフィードバックを集めるため、プレビュー リリースとベータ リリースを行っています。 既定では、nuget.org のパッケージ一覧や検索結果には、プレリリース パッケージが表示されます。

安定したパッケージのみを表示したり検索するには:

  • nuget.org 上のフィルターの [プレリリースを含める] のチェックを外します。
  • または、Visual Studio の NuGet パッケージ マネージャー UI で、検索ボックスの横にある [プレリリースを含める] のチェックを外します。

Visual Studio パッケージ マネージャー コンソールや、NuGet CLIや、dotnet CLI ツールには、プレリリース バージョンは既定では含まれていません。 プレリリース バージョンを含めるには:

  • パッケージ マネージャー コンソールの場合、-IncludePrerelease のスイッチとFind-PackageGet-PackageInstall-PackageSync-PackageUpdate-Package のコマンドを使用します。 詳細については、PowerShell リファレンスを参照してください。

  • NuGet CLI の場合は、-prerelease のスイッチと installupdatedeletemirror のコマンドを使用します。 詳細については、NuGet CLI リファレンス を参照してください。

  • dotnet CLI の場合は、引数 -vを使用して、プレリリース バージョンを指定します。 詳細については、「dotnet のパッケージ追加に関するリファレンス」を参照してください。

ネイティブ C++ パッケージ

Visual Studio C++ のプロジェクトでは、ネイティブ C++ NuGet パッケージを使用できます。 これらのパッケージをインストールすると、[NuGet パッケージの管理]やコンテキスト メニューのコマンドが有効になり、ターゲット フレームワークがnative公開され、MSBuild が統合されます。

nuget.org でネイティブ パッケージを見つけるには、tag:native を使用して検索します。 このようなパッケージには通常、 .targets ファイルと .props ファイルが含まれます。これらのファイルは、パッケージが追加されると、NuGet で自動的にインポートを行います。

パッケージを確認する

パッケージの有用性を評価する最善の方法は、とにかく試してみることです。パッケージを使用するにあたって、パッケージへの依存は避けられません。ですので、堅牢で信頼性の高いパッケージかどうか確認する必要があります。 ただし、パッケージをインストールして直接テストするには、時間がかかります。 パッケージの品質は、nuget.org/packages 上のパッケージのページにある情報を活用することで、多くのことが分かります。

  • パッケージ一覧にあるパッケージ ID の横にプレフィックス予約済みとチェックマークがついている場合、パッケージの所有者が予約済みパッケージ ID プレフィックスの申請が完了し、保証がされているということを示しています。 ID プレフィックスの予約条件を満たすには、パッケージの所有者が自身とパッケージの明確な識別を行う必要があります。

    Screenshot that shows Prefix Reserved on a package's page.

  • パッケージのページの右側にあるダウンロードのところには、合計現在のバージョンに、1 日あたりの平均ダウンロード数が表示されています。 その数値が高いということは、多くの開発者の間でパッケージの有用性が証明されているということです。

    Screenshot that shows Download statistics on a package's page.

    ダウンロード の横にある [全ての統計] を選択すると、過去 6 週間のパッケージのダウンロード数がバージョン番号別に表示されます。 その中で使用されているのが多いバージョンを選ぶのが、より良い選択と言えます。

  • パッケージのページの [Used By] のタブには、そのパッケージに依存するもので、人気上位 5 つの NuGet.org パッケージと GitHub リポジトリが書かれています。 このように動作させるために他のパッケージが必要なパッケージやリポジトリは、「依存パッケージ(リポジトリ)」と呼ばれています。 依存パッケージ(リポジトリ)の存在は、承認の証です。なぜなら作成者は、信頼してそのパッケージに依存するものを作成したからです。

    Screenshot that shows the Used By list.

    依存パッケージの最新のバージョンは、依存先のパッケージのどのバージョンとも依存関係でなくてはなりません。 このような決まりがあるので、表示されている依存パッケージを見れば、依存パッケージの作成者が信頼して、パッケージに依存し続けているのだと読み取ることができます。 依存パッケージのリストには、プレリリースの依存は表示されません。プレリリースの状態では、まだ完全な保証とは見なされないためです。 次の例は、どのパッケージが依存パッケージとして表示するかを示しています。

    依存パッケージのバージョン 依存パッケージが依存関係にあるかどうか
    v1.0.0
    v1.1.0 (最新のバージョン) は、このパッケージに依存しています
    v1.2.0-preview
    TRUE、最新のバージョンは、このパッケージ に依存しています
    v1.0.0 はこのパッケージに依存しています
    v 1.1.0 (最新の安定バージョン)
    v1.2.0-preview
    FALSE、最新のバージョンはこのパッケージに依存していません
    v1.0.0 はこのパッケージに依存しています
    v 1.1.0 (最新の安定バージョン)
    v1.2.0-preview はこのパッケージに依存しています
    FALSE、最新のバージョンはこのパッケージに依存していません

    GitHub リポジトリの星の数は、GitHub ユーザーに人気があることを示しています。 GitHub の星とリポジトリのランク付けのシステムの詳細については、「星について」を参照してください。

    Note

    [Used By] のタブは、自動的に生成されます。この生成は、情報提供のみを目的として定期的に更新されます。人が書いたレビューはここには表示されません。

  • パッケージのページの [バージョン] タブには、バージョンや、ダウンロードや、最終更新日に加え、パッケージ のバージョンの深刻な脆弱性が表示されます。 深刻度の高い脆弱性を持つバージョンのインストールは避けましょう。 最近の更新があり、バージョン履歴が沢山あるものは、適切に保守されているパッケージと言えます。 放置されているパッケージは、更新回数が少なく、更新日がかなり前であるのが特徴です。

    Screenshot that shows the Versions list.

パッケージのページの右側には、その他に役に立つリンクがあります。

Screenshot that shows the right column of the package page.

  • (使用できる場合) [プロジェクト Web サイト] を選択すると、作成者が提供するサポート オプションを確認できます。 専用のサイトがあるプロジェクトは、一般的にサポートのレベルが高いです。

  • [ソース リポジトリ] を選択すると、パッケージの Git の ソース コード リポジトリに移動できます。 多くの作成者は、オープンソースのリポジトリにパッケージを保持しているため、ユーザーは直接バグ修正と機能改善に貢献できます。 また、コントリビューション履歴を見れば、どれくらいの数の開発者が積極的に関与しているかがよくわかります。

  • <ライセンスの種類 > ライセンスを選択すると、パッケージの MIT またはその他のライセンスが表示されます。 パッケージでライセンス条項が書かれていない場合は、パッケージの所有者に問い合わせてください。

  • [所有者] の下に表示されている所有者の名前を選択すると、その他の発行済みのパッケージが表示されます。 複数のパッケージを公開している所有者は、継続的なサポートをしてくれる可能性が高いです。 [所有者] の横にある [所有者に連絡] を選択すると、パッケージ開発者に直接連絡できます。

ライセンス情報の取得

一部の NuGet クライアントと NuGet フィードでは、ライセンス情報を表示できない場合があります。 このような場合、下位互換性を維持するために、ライセンス URL はこのページに指定されます。以下にライセンス情報を取得する方法を説明します。

パッケージのライセンス URL をクリックしてこのページに移動してきた場合、そのパッケージにはライセンス ファイルが含まれており、次のうちのどれかが該当します。

  • ライセンス情報の解釈やクライアントに表示する方法をまだ把握していないフィードに接続している。
  • フィードによって提供されるライセンス情報を解釈の方法をまだ把握していないクライアントを使用している
  • またはその両方。

パッケージ内のライセンス ファイルに含まれている情報を読み取る方法は:

  1. パッケージをダウンロードし、フォルダーに解凍します。
  2. フォルダーの下にある .nuspec ファイルを開きます。
  3. たとえば <license type="file">license\license.txt</license> のような <license> のタグを調べます。 このタグの例は、ライセンス ファイルが license.txt という名前で、license というサブフォルダー内にあることを示しています。
  4. 指定した場所に移動し、指定したファイルを開きます。

nuspec でのライセンスの設定と同等の MSBuild の詳細については、「ライセンス式またはライセンス ファイルのパッキング」.を参照してください。

次のステップ