NuGet パッケージを発行する

NuGet パッケージを作成し、.nupkg ファイルを作成したら、そのパッケージを他の開発者が公開または非公開で使用できるように設定できます。 この記事では、nuget.org を通じて公開パッケージをグローバルに共有する方法について説明します。

非公開パッケージを特定のチームまたは組織だけが利用できるようにすることもできます。このようにするには、パッケージをファイル共有、プライベート NuGet サーバー、またはサードパーティのリポジトリ (たとえば myget、ProGet、Nexus Repository、Artifactory) でホストします。 詳細については、「独自の NuGet フィードのホスト」を参照してください。 Azure Artifacts を使用した公開については、「パッケージを NuGet.org に公開する」を参照してください。

nuget.org に公開する

nuget.org で公開するには、Microsoft アカウントで nuget.org にサインインし、それを使用して無料の nuget.org アカウントを作成します。 「新しい個人アカウントを追加する」の手順に従ってください。

Screenshot that shows the NuGet sign in link.

アカウントを作成したら、nuget.org Web ポータル、dotnet CLI、または NuGet CLI バージョン 4.1.0 以降を使用して、パッケージを nuget.org に公開できます。 Azure Pipelines を使用してパッケージを公開することもできます。

nuget.org Web ポータルにアップロードする

nuget.org Web サイトにパッケージをアップロードするには、次の手順を実行します。

  1. nuget.org の上部メニューで [アップロード] を選択し、コンピューター上のパッケージを参照して、[開く] を選択します。

    Screenshot that shows the Upload dialog on nuget.org

    パッケージ ID が既に nuget.org に存在する場合は、エラーが発生します。 プロジェクトのパッケージ ID を変更し、再パックしてから、アップロードをもう一度やり直してください。

  2. パッケージ名が使用可能な場合、[確認] セクションが開き、パッケージ マニフェストのメタデータを確認できます。 パッケージに Readme ファイルを含めた場合は、[プレビュー] を選択し、すべてのコンテンツが正しくレンダリングされることを確認してください。

    いずれかのメタデータを変更するには、プロジェクトファイルまたは .nuspec ファイルを編集し、リビルドと再パックをしてから、もう一度アップロードします。

  3. すべての情報が準備できたら、[送信] を選択します。

コマンド ラインを使用してプッシュする

コマンド ラインを使用してパッケージを nuget.org にプッシュするには、必要な NuGet プロトコルを実装する dotnet.exe または nuget.exe v4.1.0 以降を使用できます。 詳細については、「NuGet プロトコル」を参照してください。

いずれかのコマンド ラインを使用するには、まず、nuget.org から API キーを取得する必要があります。

API キーの作成

  1. ご自分の nuget.org アカウントにサインインするか、まだ持っていなければ、アカウントを作成します。

  2. 右上にあるユーザー名を選択し、[API キー] を選択します。

  3. [作成] を選択して、キーの名前を指定します。

  4. [スコープの選択][プッシュ] を選択します。

  5. [パッケージの選択]>[glob パターン] に「*」と入力します。

  6. [作成] を選択します

  7. [コピー] を選択して新しいキーをコピーします。

    Screenshot that shows the new API key with the Copy link.

重要

  • API キーは誰にも教えないでください。 API キーはパスワードのようなものであり、API キーを使うと、誰でもお客様に代わってパッケージを管理できるようになります。 API キーが誤って漏えいした場合は、削除または再生成してください。
  • 後でもう一度キーをコピーすることはできないため、キーを安全な場所に保存しておいてください。 [API キー] ページに戻ったら、キーを再生成してコピーする必要があります。 パッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。

スコープを使用して、別の目的のために別の API キーを作成できます。 各キーには有効期限の時間枠があり、特定のパッケージ (またはの glob パターン) に対してスコープを設定できます。 また、各キーのスコープは、「新しいパッケージとパッケージ バージョンのプッシュ」、「新しいパッケージ バージョンのプッシュのみ」、「またはリストから外す」など、特定の操作に限定して設定します。

組織のパッケージ管理を行う担当者が必要なアクセス許可以外は持たないように、スコープを使用して、担当者ごとに API キーを作成できます。

詳しくは、「スコープ設定された API キー」をご覧ください。

dotnet CLI を使用する

.nupkg ファイルを含むフォルダーから、次のコマンドを実行します。 .nupkg ファイル名を指定し、キーの値をご自身の API キーに置き換えます。

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

出力に、公開プロセスの結果が表示されます。

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

詳細については、「dotnet nuget push」を参照してください。

Note

テスト パッケージが nuget.org で公開されないようにするには、nuget.org のテスト サイト (https://int.nugettest.org) にプッシュします。int.nugettest.org にアップロードされたパッケージは保持されない場合があることに注意してください。

NuGet CLI を使用する

  1. コマンド プロンプトで次のコマンドを実行して、<your_API_key> を nuget.org から取得したキーに置き換えます。

    nuget setApiKey <your_API_key>
    

    このコマンドによって API キーが NuGet 構成に格納されます。そのため、同じコンピューター上でこの API キーをもう一度入力する必要はありません。

    Note

    この API キーは、プライベート フィードでの認証には使用されません。 これらのソースで認証するための資格情報を管理するには、nuget sources コマンドを参照してください。

  2. 次のコマンドを使用してパッケージをプッシュします。

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Azure Pipelines を使用して公開する

継続的インテグレーション/継続的デプロイ (CI/CD) プロセスの一環として、Azure Pipelines を使用してパッケージを nuget.org にプッシュできます。 詳細については、「Azure Pipelines を使用して NuGet パッケージを発行する」を参照してください。

署名付きパッケージを公開する

署名付きパッケージを送信するには、最初に、パッケージの署名に使用する証明書を登録する必要があります。 署名付きパッケージの要件を満たしていない場合、nuget.org はパッケージを拒否します。

パッケー サイズの制限

nuget.org には、約 250 MB のパッケージ サイズ制限があります。 その制限を超えるパッケージがアップロードされると、次のエラーが表示されます。

パッケージ ファイルがサイズ制限を超えています。 もう一度やり直してください。

このようなパッケージがコマンド ラインからプッシュされると、次の出力が生成されます。

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

このエラーが発生する場合は、パッケージの内容を変更してサイズを小さくすることを検討してください。 デバッグ シンボルをパッケージにパックする場合は、個別に公開することを検討してください。 その他のアセットは 1 つ以上の依存関係パッケージとして個別に公開して、小さなチャンクに分散させることができます。

パッケージの検証とインデックスの作成

nuget.org にプッシュされたパッケージは、ウィルス チェックなど、いくつかの検証を受けます。既存のパッケージは定期的にスキャンされます。 パッケージがすべての検証チェックに合格すると、少し時間をかけてインデックスを作成してから、検索結果に表示されるようになります。 パッケージのインデックスが作成されている間、パッケージは [一覧に含まれないパッケージ] の下に表示され、パッケージ ページに次のメッセージが表示されます。

Screenshot of a message indicating that a package isn't yet published.

検証とインデックスの作成が完了すると、パッケージが正常に公開されたことを示すメールが届きます。 パッケージが検証チェックで不合格になった場合、パッケージ ページが更新されて関連するエラーが表示され、通知メールも届きます。

パッケージの検証とインデックスの作成は、通常、15 以内で完了します。 パッケージの公開に想定以上の時間がかかっている場合は、status.nuget.org で nuget.org の状態を確認してください。すべてのシステムが稼働していて、パッケージが 1 時間以内に正常に公開されない場合は、パッケージ ページの [サポートに問い合わせ] リンクを使用して、nuget.org にお問い合わせください。

パッケージの状態を表示するには、nuget.org の右上にあるアカウント名の下にある [パッケージの管理] を選択し、[公開済みパッケージ] または [一覧に含まれないパッケージ] からパッケージを選択します。

nuget.org でパッケージの所有者を管理する

パッケージ所有者には、パッケージに対する完全なアクセス許可が与えられます。他の所有者を追加したり、削除したり、更新内容を公開したりできます。

各 NuGet パッケージの .nuspec ファイルはパッケージの作成者を定義するものですが、nuget.org では、所有権の定義にそのメタデータは使用されません。 代わりに、nuget.org は、パッケージを発行するユーザー (パッケージをアップロードしたサインイン ユーザー、または dotnet pushnuget SetApiKey、または nuget push で API キーが使用されたユーザー) に所有権を割り当てます。

パッケージの所有権を変更するには、次の手順を実行します。

  1. パッケージの現在の所有者であるアカウントで nuget.org にサインインします。

  2. 右上にある自分のアカウント名を選択し、[パッケージの管理] を選択して、[公開済みパッケージ] を展開します。

  3. 管理するパッケージを選択し、パッケージ ページの右側にある [パッケージの管理] を選択します。

  4. [パッケージの管理] ページで、[所有者] を選択します。

  5. 以下のいずれかのアクションを実行します:

    • 現在の所有者を削除するには、[削除] を選択します。

    • [所有者の追加] でユーザー名とメッセージを入力して [追加]を選択し、に所有者を追加します。

      このアクションでその新しい共同所有者に確認リンクを含むメールが送信されます。 確認後、その人に所有者を追加したり、削除したりできる完全アクセス許可が与えられます。 確認されるまで、[現在の所有者] セクションにはその人の承認待ちとして表示されます。

所有権が変更された場合や間違ったアカウントでパッケージが公開された場合に所有権を譲渡するには、新しい所有者を追加します。 新しい所有者が所有権を確認したら、一覧から以前の所有者を削除できます。

会社またはグループに所有権を割り当てるには、適切なチーム メンバーに転送されるメール エイリアスを利用して nuget.org アカウントを作成します。 たとえば、Microsoft アカウントや aspnet アカウントでさまざまな Microsoft ASP.NET パッケージが共同所有されています。

場合によっては、パッケージにアクティブな所有者が与えられていないことがあります。 たとえば、元の所有者がパッケージを作成した会社を辞めたとします。 自分がパッケージの正当な所有者であり、所有権を取り戻す必要がある場合、nuget.org の問い合わせフォームを利用し、NuGet チームに状況を説明してください。 担当チームは、既存の所有者を見つけようとするなど、所有権を確認するプロセスに従い、パッケージ所有者になるための新しい招待を送信できます。

次のステップ