パッケージを公開するPublishing packages

パッケージを作成し、.nupkg ファイルを入手している場合は、このプロセスにより、他の開発者がパッケージを簡単に利用できるようにすることができます。公開または非公開のいずれかを選択できます。Once you have created a package and have your .nupkg file in hand, it's a simple process to make it available to other developers, either publicly or privately:

  • 公開パッケージの場合、この記事で説明するように、nuget.org 経由で世界中の開発者が利用できます (NuGet 4.1.0 以降が必要です)。Public packages are made available to all developers globally through nuget.org as described in this article (requires NuGet 4.1.0+).
  • 非公開パッケージは、特定のチームまたは組織だけが利用できます。このようにするには、パッケージをファイル共有、プライベート NuGet サーバー、Azure Artifacts、またはサードパーティのリポジトリ (たとえば myget、ProGet、Nexus Repository、Artifactory) でホストします。Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, Azure Artifacts, or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. 詳細については、「Hosting Packages Overview」 (パッケージ ホストの概要) を参照してください。For additional details, see Hosting Packages Overview.

この記事では、nuget.org に公開する方法を取り上げます。Azure Artifacts に公開する方法については、「Package Management」(パッケージ管理) をご覧ください。This article covers publishing to nuget.org; for publishing to Azure Artifacts, see Package Management.

nuget.org に公開するPublish to nuget.org

Nuget.org の場合、Microsoft アカウントでサインインする必要があります。このアカウントで、nuget.org でのアカウント登録を行うよう求められます。また、古いバージョンのポータルを使用して作成された nuget.org アカウントで、サインインすることも可能です。For nuget.org, you must sign in with a Microsoft account, with which you'll be asked to register the account with nuget.org. You can also sign in with a nuget.org account created using older versions of the portal.

NuGet サインインの場所

次に、パッケージを nuget.org Web ポータルからアップロードするか、コマンド ラインから nuget.org にプッシュするか (nuget.exe 4.1.0 以上が必要です)、CI/CD プロセスの一部として Azure DevOps Services を通して公開します。これらの方法について、以降のセクションで説明します。Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line (requires nuget.exe 4.1.0+) , or publish as part of a CI/CD process through Azure DevOps Services, as described in the following sections.

Web ポータル: nuget.org の [パッケージのアップロード] を使用Web portal: use the Upload Package tab on nuget.org

  1. nuget.org の上部メニューで [アップロード] を選択して、パッケージの場所を参照します。Select Upload on the top menu of nuget.org and browse to the package location.

    nuget.org 上でパッケージをアップロードする

  2. nuget.org では、パッケージ名が使用可能かどうかが示されます。nuget.org tells you if the package name is available. 使用できない場合、お使いのプロジェクトのパッケージ ID を変更し、リビルドしてから、アップロードをもう一度やり直してください。If it isn't, change the package identifier in your project, rebuild, and try the upload again.

  3. パッケージ名が使用可能な場合、nuget.org では、パッケージ マニフェストからメタデータを確認できる [確認] セクションを開きます。If the package name is available, nuget.org opens a Verify section in which you can review the metadata from the package manifest. いずれかのメタデータを変更するには、お使いのプロジェクト (プロジェクト ファイルまたは .nuspec ファイル) を編集し、リビルドし、パッケージを再作成して、もう一度アップロードします。To change any of the metadata, edit your project (project file or .nuspec file), rebuild, recreate the package, and upload again.

  4. [Import Documentation](ドキュメントのインポート) では、マークダウンを貼り付けて、URL でドキュメントを参照したり、ドキュメント ファイルをアップロードしたりできます。Under Import Documentation you can paste Markdown, point to your docs with a URL, or upload a documentation file.

  5. すべての情報が準備できたら、 [送信] ボタンを選択します。When all the information is ready, select the Submit button

コマンド ラインCommand line

nuget.org にパッケージをプッシュするには、nuget.exe v4.1.0 以降を使用する必要があります。これは必須の NuGet プロトコルを実装します。To push packages to nuget.org you must use nuget.exe v4.1.0 or above, which implements the required NuGet protocols. また、nuget.org 上で作成される API キーも必要です。You also need an API key, which is created on nuget.org.

API キーの作成Create API keys

  1. ご自分の nuget.org アカウントにサインインするか、まだ持っていなければ、アカウントを作成します。Sign into your nuget.org account or create an account if you don't have one already.

    アカウントの作成について詳しくは、「個人アカウント」をご覧ください。For more information on creating your account, see Individual accounts.

  2. (右上で) ユーザー名を選択し、 [API キー] を選択します。Select your user name (on the upper right), then select API Keys.

  3. [作成] を選択し、キーの名前を指定して、 [スコープの選択] > [プッシュ] の順に選択します。Select Create, provide a name for your key, select Select Scopes > Push. [glob パターン] に「*」と入力してから、 [作成] を選択します。Enter * for Glob pattern, then select Create. (スコープの詳細については、後述の説明をご覧ください。)(See below for more about scopes.)

  4. キーが作成されたら、 [コピー] を選択して、CLI で必要となるアクセス キーを取得します。Once the key is created, select Copy to retrieve the access key you need in the CLI:

    API キーをクリップボードにコピーする

  5. 重要: 後でもう一度キーをコピーすることはできないため、キーを安全な場所に保存しておいてください。Important: Save your key in a secure location because you cannot copy the key again later on. [API キー] ページに戻ったら、キーを再生成してコピーする必要があります。If you return to the API key page, you need to regenerate the key to copy it. CLI を通じてパッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。You can also remove the API key if you no longer want to push packages via the CLI.

スコープを使用して、別の目的のために別個の API キーを作成できます。Scoping allows you to create separate API keys for different purposes. 各キーは有効期限の時間枠を備え、特定のパッケージ (またはの glob パターン) に対してスコープを設定できます。Each key has its expiration timeframe and can be scoped to specific packages (or glob patterns). また、各キーは、新しいパッケージと更新のプッシュ、更新のプッシュのみ、リストからの除外など、特定の操作に対してもスコープを設定します。Each key is also scoped to specific operations: push of new packages and updates, push of updates only, or delisting. スコープを使用して、必要なアクセス許可以外は持たない組織のパッケージ管理を行う別の担当者のために、API キーを作成できます。Through scoping, you can create API keys for different people who manage packages for your organization such that they have only the permissions they need. 詳しくは、「スコープ設定された API キー」をご覧ください。For more information, see scoped API keys.

dotnet nuget push を使用して公開するPublish with dotnet nuget push

  1. .nupkg ファイルを含むフォルダーに変更します。Change to the folder containing the .nupkg file.

  2. 使用するパッケージ名 (一意のパッケージ ID) を指定し、キーの値を使用する API キーに置き換えて、次のコマンドを実行します。Run the following command, specifying your package name (unique package ID) and replacing the key value with your API key:

    dotnet nuget push AppLogger.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json
    
  3. dotnet により、公開プロセスの結果が表示されます。dotnet displays the results of the publishing process:

    info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
    info :   PUT https://www.nuget.org/api/v2/package/
    info :   Created https://www.nuget.org/api/v2/package/ 12620ms
    info : Your package was pushed.
    

dotnet nuget push」を参照してください。See dotnet nuget push.

nuget push を使用して公開するPublish with nuget push

  1. コマンド プロンプトで次のコマンドを実行して、<your_API_key> を nuget.org から取得したキーに置き換えます。At a command prompt, run the following command, replacing <your_API_key> with the key obtained from nuget.org:

    nuget setApiKey <your_API_key>
    

    このコマンドでは、ご利用の API キーがご利用の NuGet 構成に格納されます。そのため、同じコンピューター上でこの手順をもう一度繰り返す必要はありません。This command stores your API key in your NuGet configuration so that you don't need to repeat this step again on the same computer.

  2. 以下のコマンドを使用して、NuGet ギャラリーにパッケージをプッシュします。Push your package to NuGet Gallery using the following command:

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

署名付きパッケージの公開Publish signed packages

署名付きパッケージを送信するには、最初にパッケージの署名に使用する証明書を登録する必要があります。To submit signed packages, you must first register the certificate used for signing the packages.

警告

署名付きパッケージの要件を満たしていないパッケージは、nuget.org に拒否されます。nuget.org rejects packages that don't satisfy the signed package requirements.

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

nuget.org にプッシュされたパッケージは、ウィルス チェックなど、いくつかの検証を受けます。Packages pushed to nuget.org undergo several validations, such as virus checks. (Nuget.org 上のすべてのパッケージが定期的にスキャンされます。)(All packages on nuget.org are periodically scanned.)

パッケージがすべての検証に合格すると、インデックスが作成され、検索結果に表示されるようになりますが、それには時間がかかることがあります。When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. インデックスの作成が完了すると、パッケージが正常に公開されたことを示す確認の電子メールが届きます。Once indexing is complete, you receive an email confirming that the package was successfully published. パッケージが検証で不合格になった場合、パッケージの詳細ページが更新され、関連するエラーが表示されます。それに関する電子メールも届きます。If the package fails a validation check, the package details page will update to display the associated error and you also receive an email notifying you about it.

パッケージの検証とインデックスの作成は、通常、15 以内で完了します。Package validation and indexing usually takes under 15 minutes. パッケージ公開に予想以上の時間がかかる場合、status.nuget.org にアクセスし、nuget.org に中断が発生していないか確認してください。If the package publishing is taking longer than expected, visit status.nuget.org to check if nuget.org is experiencing any interruptions. すべてのシステムが動作しているとき、1 時間以内にパッケージが正常に公開されない場合、nuget.org にログインし、パッケージ ページの [Contact Support] リンクからお問い合わせください。If all systems are operational and the package hasn't been successfully published within an hour, please login to nuget.org and contact us using the Contact Support link on the package page.

パッケージのステータスを表示するには、nuget.org でアカウント名の下にある [パッケージの管理] を選択します。検証が完了すると、確認の電子メールを受信します。To see the status of a package, select Manage packages under your account name on nuget.org. You receive a confirmation email when validation is complete.

パッケージにインデックスが付けられ、検索結果に表示されるようになり、他のユーザーが検索可能になるまで時間がかかることがあります。その間、パッケージ ページには次のメッセージが表示されます。Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you see the following message on your package page:

パッケージがまだ公開されていないことを示すメッセージ

Azure DevOps Services (CI/CD)Azure DevOps Services (CI/CD)

Azure DevOps Services を使用して、継続的インテグレーション/配置プロセスの一部としてパッケージを nuget.org にプッシュする場合は、nuget.exe 4.1 以上を NuGet タスクの中で使用する必要があります。If you push packages to nuget.org using Azure DevOps Services as part of your Continuous Integration/Deployment process, you must use nuget.exe 4.1 or above in the NuGet tasks. 詳細は、Microsoft DevOps ブログの「Using the latest NuGet in your build」 (ビルドで最新の NuGet を利用する) にあります。Details can be found on Using the latest NuGet in your build (Microsoft DevOps blog).

nuget.org でパッケージ所有者を管理するManaging package owners on nuget.org

各 NuGet パッケージの .nuspec はパッケージの作成者を定義するものですが、nuget.org ギャラリーでは、所有権の定義にそのメタデータは使用されません。Although each NuGet package's .nuspec file defines the package's authors, the nuget.org gallery does not use that metadata to define ownership. nuget.org では、パッケージを公開した人に最初の所有権が割り当てられます。Instead, nuget.org assigns initial ownership to the person who publishes the package. これは nuget.org UI からパッケージをアップロードしたログイン ユーザーになるか、nuget SetApiKey または nuget push と共に API キーが使用されたユーザーになります。This is either the logged-in user who uploaded the package through the nuget.org UI, or the users whose API key was used with nuget SetApiKey or nuget push.

パッケージ所有者にはすべて、パッケージの完全アクセス許可が与えられます。他の所有者を追加したり、削除したり、更新内容を公開したりできます。All package owners have full permissions for the package, including adding and removing other owners, and publishing updates.

パッケージの所有権は次のように変更します。To change ownership of a package, do the following:

  1. パッケージの現在の所有者になっているアカウントで nuget.org にサインインします。Sign in to nuget.org with the account that is the current owner of the package.
  2. 自分のアカウント名を選択し、 [パッケージの管理] を選択し、 [Published Packages](公開されたパッケージ) を展開します。Select your account name, select Manage packages, and expand Published Packages.
  3. 管理するパッケージを選択し、右側にある [Manage owners](所有者を管理する) を選択します。Select on the package you want to manage, then on the right side select Manage owners.

ここにはいくつかのオプションがあります。From here you have several options:

  1. [Current Owners](現在の所有者) に一覧表示されたいずれかの所有者を削除します。Remove any owner listed under Current Owners.
  2. ユーザー名、メッセージを入力して [追加] を選択し、 [所有者の追加] に所有者を追加します。Add an owner under Add Owner by entering their user name, a message, and selecting Add. この動作でその新しい共同所有者に確認リンクを含む電子メールが送信されます。This action sends an email to that new co-owner with a confirmation link. 確認後、その人に所有者を追加したり、削除したりできる完全アクセス許可が与えられます。Once confirmed, that person has full permissions to add and remove owners. (確認されるまで、 [Current Owners](現在の所有者) セクションにはその人が承認待ちとして表示されます。)(Until confirmed, the Current Owners section indicates pending approval for that person.)
  3. 所有権を譲渡するには (所有権が変更された場合や間違ったアカウントでパッケージが公開された場合)、新しい所有者を追加します。新しい所有者は所有権を確認したら、一覧から他の所有者を削除できます。To transfer ownership (as when ownership changes or a package was published under the wrong account), add the new owner, and once they've confirmed ownership they can remove you from the list.

会社またはグループに所有権を割り当てるには、適切なチーム メンバーに転送される電子メール エイリアスを利用して nuget.org アカウントを作成します。To assign ownership to a company or group, create a nuget.org account using an email alias that is forwarded to the appropriate team members. たとえば、そのようなエイリアスである microsoft アカウントや aspnet アカウントでさまざまな Microsoft ASP.NET パッケージが共同所有されています。For example, various Microsoft ASP.NET packages are co-owned by the microsoft and aspnet accounts, which simply such aliases.

パッケージ所有権を回復するRecovering package ownership

パッケージにアクティブな所有者が与えられていないことがあります。Occasionally, a package may not have an active owner. たとえば、パッケージを作る会社を元々の所有者が去った場合、nuget.org 資格情報をなくした場合、ギャラリーの早期のバグが原因でパッケージが所有者なしになった場合などです。For example, the original owner may have left the company that produces the package, nuget.org credentials are lost, or earlier bugs in the gallery left a package ownerless.

自分がパッケージの正当な所有者であり、所有権を取り戻す必要がある場合、nuget.org の問い合わせフォームを利用し、NuGet チームに状況を説明してください。If you are the rightful owner of a package and need to regain ownership, use the contact form on nuget.org to explain your situation to the NuGet team. その後、パッケージの所有権を検証するプロセスが開始します。パッケージのプロジェクト URL、Twitter、電子メール、その他の手段で既存の所有者が確認されます。We then follow a process to verify your ownership of the package, including trying to locate the existing owner through the package's Project URL, Twitter, email, or other means. いずれの方法でも確認できない場合、所有者になるための新しい招待を送信します。But if all else fails, we can send you a new invite to become an owner.