次の方法で共有


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 アカウントを作成します。 「 新しい個別アカウントを追加する」の手順に従います。

NuGet サインイン リンクを示すスクリーンショット。

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

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

nuget.org Web サイトにパッケージをアップロードするには:

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

    nuget.org の [アップロード] ダイアログを示すスクリーンショット

    パッケージ ID が既に nuget.org に存在する場合は、エラーが発生します。 プロジェクトのパッケージ識別子を変更し、再パックして、アップロードを再試行します。

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

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

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

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

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

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

API キーの作成

  1. nuget.org アカウントにサインイン するか、まだアカウントがない場合は アカウントを作成 します。

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

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

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

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

  6. を選択してを作成します。

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

    [コピー] リンクを含む新しい API キーを示すスクリーンショット。

Important

  • 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」を参照してください。

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

NuGet CLI を使用する

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

    nuget setApiKey <your_API_key>
    

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

    この 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 にプッシュされたパッケージは、ウイルス チェックなど、いくつかの検証を受け、既存のパッケージは定期的にスキャンされます。 パッケージがすべての検証チェックに合格すると、インデックスが作成されて検索結果に表示されるまでに時間がかかる場合があります。 パッケージのインデックスが作成されている間、パッケージは リストされていないパッケージの下に表示され、パッケージ ページに次のメッセージが表示されます。

パッケージがまだ発行されていないことを示すメッセージのスクリーンショット。

検証とインデックス作成が完了すると、パッケージが正常に発行されたという電子メールが届きます。 パッケージが検証チェックに失敗すると、パッケージ ページが更新され、関連するエラーが表示され、通知メールが届きます。

パッケージの検証とインデックス作成には通常 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 ASP.NET パッケージは、 microsoft アカウントと aspnet アカウントによって共同所有されています。

パッケージにアクティブな所有者がいない場合があります。 たとえば、元の所有者がパッケージを作成した会社を辞めたとします。 パッケージの正当な所有者であり、所有権を回復する必要がある場合は、nuget.org の 連絡先フォーム を使用して、NuGet チームに状況を説明します。 チームは、既存の所有者を見つけようとするなど、所有権を確認するプロセスに従い、パッケージ所有者になるための新しい招待を送信できます。

次のステップ