クイック スタート: パッケージの作成と公開 (dotnet CLI)Quickstart: Create and publish a package (dotnet CLI)

これは、dotnetコマンド ライン インターフェイス (CLI) を使用して、.NET クラス ライブラリから NuGet パッケージを作成し、nuget.org に公開する簡単なプロセスです。It's a simple process to create a NuGet package from a .NET Class Library and publish it to nuget.org using the dotnet command-line interface (CLI).

必須コンポーネントPrerequisites

  1. dotnet CLI を含む .NET Core SDK をインストールします。Install the .NET Core SDK, which includes the dotnet CLI. Visual Studio 2017 以降、dotnet CLI は .NET Core 関連のワークロードで自動的にインストールされます。Starting in Visual Studio 2017, the dotnet CLI is automatically installed with any .NET Core related workloads.

  2. まだ持っていない場合は、nuget.org で無料アカウントを登録します。Register for a free account on nuget.org if you don't have one already. 新しいアカウントを作成すると、確認メールが送信されます。Creating a new account sends a confirmation email. パッケージをアップロードするには、その前にアカウントを確認する必要があります。You must confirm the account before you can upload a package.

クラス ライブラリ プロジェクトを作成するCreate a class library project

パッケージ化するコードに既存の .NET クラス ライブラリ プロジェクトを使用することも、次の手順に従って単純なプロジェクトを作成することもできます。You can use an existing .NET Class Library project for the code you want to package, or create a simple one as follows:

  1. AppLoggerという名前のフォルダーを作成し、そこに変更します。Create a folder called AppLogger and change into it.

  2. dotnet new classlibを使用してプロジェクトを作成します。プロジェクト名には現在のフォルダーの名前が使用されます。Create the project using dotnet new classlib, which uses the name of the current folder for the project.

パッケージのメタデータをプロジェクト ファイルに追加するAdd package metadata to the project file

すべての NuGet パッケージには、その内容と依存関係を説明するマニフェストが必要です。Every NuGet package needs a manifest that describes the package's contents and dependencies. 最終的なパッケージでは、マニフェストは、プロジェクト ファイルに含まれる NuGet メタデータのプロパティから生成される .nuspec ファイルです。In a final package, the manifest is a .nuspec file that is generated from the NuGet metadata properties that you include in the project file.

  1. プロジェクト ファイル (.csproj) を開いて、既存の <PropertyGroup> タグ内に次の最小限のプロパティを追加し、必要に応じて値を変更します。Open your project file (.csproj) and add the following minimal properties inside the existing <PropertyGroup> tag, changing the values as appropriate:

    <PackageId>AppLogger</PackageId>
    <Version>1.0.0</Version>
    <Authors>your_name</Authors>
    <Company>your_company</Company>
    

    重要

    パッケージに、nuget.org または使用しているホスト全体で一意の識別子を付けます。Give the package an identifier that's unique across nuget.org or whatever host you're using. このチュートリアルでは、以降の公開手順でパッケージを一般公開するので (ただし、誰かが実際に使用する可能性はありません)、名前に "Sample" または "Test" を含めることをお勧めします。For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it).

  2. NuGet メタデータ プロパティ」で説明する省略可能なプロパティを追加します。Add any optional properties described on NuGet metadata properties.

    注意

    公開用にビルドされたパッケージの場合は、PackageTagsプロパティに特に注意してください。これらのタグは他のユーザーがパッケージを検索して、パッケージの動作を理解するのに役立ちます。For packages built for public consumption, pay special attention to the PackageTags property, as tags help others find your package and understand what it does.

pack コマンドを実行するRun the pack command

プロジェクトから NuGet パッケージ (.nupkg ファイル) を作成するには、dotnet pack コマンドを実行します。このコマンドではプロジェクトのビルドも自動的に行われます。To build a NuGet package (a .nupkg file) from the project, run the dotnet pack command, which also builds the project automatically:

# Uses the project file in the current folder by default
dotnet pack

出力に、.nupkg ファイルへのパスが表示されます。The output shows the path to the .nupkg file:

Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 29.91 ms for D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj.
  AppLogger -> D:\proj\AppLoggerNet\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll
  Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'.

ビルド時に自動的にパッケージを生成するAutomatically generate package on build

dotnet build の実行時に自動的に dotnet pack を実行させるには、プロジェクト ファイルの <PropertyGroup> 内に次の行を追加します。To automatically run dotnet pack when you run dotnet build, add the following line to your project file within <PropertyGroup>:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

パッケージを公開するPublish the package

.nupkg ファイルを作成したら、dotnet nuget push コマンドと、nuget.org から取得した API キーを使用して、そのファイルを nuget.org に公開します。Once you have a .nupkg file, you publish it to nuget.org using the dotnet nuget push command along with an API key acquired from nuget.org.

注意

ウイルス スキャン: nuget.org にアップロードされたすべてのパッケージはウイルス スキャンが行われ、ウイルスが見つかった場合には拒否されます。Virus scanning: All packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. nuget.org の一覧にあるすべてのパッケージも定期的にスキャンされます。All packages listed on nuget.org are also scanned periodically.

nuget.org に公開したパッケージは、一覧から削除しない限り、他の開発者にも一般公開されます。Packages published to nuget.org are also publicly visible to other developers unless you unlist them. パッケージを非公開でホストするには、パッケージのホスティングに関するページを参照してください。To host packages privately, see Hosting packages.

API キーを取得するAcquire your API key

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

  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. 詳細については、「Introducing scoped API keys」 (スコ―プ設定された API キーを導入する) (blogs.nuget.org) をご覧ください。For more information, see Introducing scoped API keys (blogs.nuget.org).

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.

公開エラーPublish errors

push コマンドのエラーは、通常、問題があることを示します。Errors from the push command typically indicate the problem. たとえば、プロジェクトのバージョン番号の更新を忘れて、既に存在するパッケージを公開しようとした場合などがあります。For example, you may have forgotten to update the version number in your project and are therefore trying to publish a package that already exists.

また、ホストに既に存在する識別子を使用してパッケージを公開しようとするとエラーが表示されます。You also see errors when trying to publish a package using an identifier that already exists on the host. たとえば、"AppLogger" という名前は既に存在します。The name "AppLogger", for example, already exists. その場合、push コマンドを実行すると、次のエラーが表示されます。In such a case, the push command gives the following error:

Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).

作成したばかりの有効な API キーを使用している場合、エラーの "アクセス許可" 部分では完全には明白ではありませんが、このメッセージは名前の競合を示します。If you're using a valid API key that you just created, then this message indicates a naming conflict, which isn't entirely clear from the "permission" part of the error. パッケージ識別子を変更し、プロジェクトをリビルドして、 .nupkg ファイルを再作成した後、push コマンドを再試行します。Change the package identifier, rebuild the project, recreate the .nupkg file, and retry the push command.

公開済みパッケージを管理するManage the published package

nuget.org のプロファイルから、[パッケージの管理] を選択して、公開したパッケージを確認します。From your profile on nuget.org, select Manage Packages to see the one you just published. 確認メールも送信されます。You also receive a confirmation email. パッケージがインデックス作成され、他のユーザーが検索して検索結果に表示されるようになるまでには、時間がかかる場合があることに注意してください。Note that it might take a while for your package to be indexed and appear in search results where others can find it. この間、パッケージのページに次のメッセージが表示されます。During that time your package page shows the message below:

このパッケージはまだインデックスされていません。

以上です。And that's it! 最初の NuGet パッケージが nuget.org に公開され、他の開発者はそれを自身のプロジェクトで使用することができます。You've just published your first NuGet package to nuget.org that other developers can use in their own projects.

このチュートリアルで作成したパッケージが、実際に有用ではない場合 (空のクラス ライブラリを使用して作成されたパッケージなど)、そのパッケージを一覧から削除して、検索結果に表示されないようにする必要があります。If in this walkthrough you created a package that isn't actually useful (such as a package created with an empty class library), you should unlist the package to hide it from search results:

  1. nuget.org で、ユーザー名 (ページの右上) を選択し、[パッケージの管理] を選択します。On nuget.org, select your user name (upper right of the page), then select Manage Packages.

  2. [公開済み] の一覧から削除するパッケージを見つけて、右側のごみ箱のアイコンを選択します。Locate the package you want to unlist under Published and select the trash can icon on the right:

    nuget.org のパッケージの一覧に表示されたごみ箱のアイコン

  3. 後続のページで、[List (package-name) in search results](検索結果に (パッケージ名) をリストする) というラベルの付いたボックスをオフにし、[保存] を選択します。On the subsequent page, clear the box labeled List (package-name) in search results and select Save:

    nuget.org でパッケージの [リストする] チェックボックスをクリア