クイック スタート: パッケージの作成と公開 (dotnet CLI)

これは、dotnetコマンド ライン インターフェイス (CLI) を使用して、.NET クラス ライブラリから NuGet パッケージを作成し、nuget.org に公開する簡単なプロセスです。

前提条件

  1. dotnet CLI を含む .NET Core SDK をインストールします。 Visual Studio 2017 以降、dotnet CLI は .NET Core 関連のワークロードで自動的にインストールされます。

  2. まだ持っていない場合は、nuget.org で無料アカウントを登録します。 新しいアカウントを作成すると、確認メールが送信されます。 パッケージをアップロードするには、その前にアカウントを確認する必要があります。

クラス ライブラリ プロジェクトを作成する

パッケージ化するコードに既存の .NET クラス ライブラリ プロジェクトを使用することも、次の手順に従って単純なプロジェクトを作成することもできます。

  1. AppLogger という名前のフォルダーを作成します。

  2. コマンド プロンプトを開いて、AppLogger フォルダーに切り替えます。

  3. dotnet new classlib」と入力します。ここでは、プロジェクトに現在のフォルダーの名前が使用されます。

    これにより、新しいプロジェクトが作成されます。

パッケージのメタデータをプロジェクト ファイルに追加する

すべての NuGet パッケージには、その内容と依存関係を説明するマニフェストが必要です。 最終的なパッケージでは、マニフェストは、プロジェクト ファイルに含まれる NuGet メタデータのプロパティから生成される .nuspec ファイルです。

  1. プロジェクト ファイル (.csproj) を開いて、既存の <PropertyGroup> タグ内に次の最小限のプロパティを追加し、必要に応じて値を変更します。

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

    重要

    パッケージに、nuget.org または使用しているホスト全体で一意の識別子を付けます。 このチュートリアルでは、以降の公開手順でパッケージを一般公開するので (ただし、誰かが実際に使用する可能性はありません)、名前に "Sample" または "Test" を含めることをお勧めします。

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

    注意

    公開用にビルドされたパッケージの場合は、PackageTags プロパティに特に注意してください。これらのタグは他のユーザーがパッケージを検索して、パッケージの動作を理解するのに役立ちます。

pack コマンドを実行する

プロジェクトから NuGet パッケージ (.nupkg ファイル) を作成するには、dotnet pack コマンドを実行します。このコマンドではプロジェクトのビルドも自動的に行われます。

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

出力に、.nupkg ファイルへのパスが表示されます。

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'.

ビルド時に自動的にパッケージを生成する

dotnet build の実行時に自動的に dotnet pack を実行させるには、プロジェクト ファイルの <PropertyGroup> 内に次の行を追加します。

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

パッケージを公開する

.nupkg ファイルを作成したら、dotnet nuget push コマンドと、nuget.org から取得した API キーを使用して、そのファイルを nuget.org に公開します。

注意

ウイルス スキャン: nuget.org にアップロードされたすべてのパッケージはウイルス スキャンが行われ、ウイルスが見つかった場合には拒否されます。 nuget.org の一覧にあるすべてのパッケージも定期的にスキャンされます。

nuget.org に公開したパッケージは、一覧から削除しない限り、他の開発者にも一般公開されます。 パッケージを非公開でホストするには、パッケージのホスティングに関するページを参照してください。

API キーを取得する

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

    アカウントの作成について詳しくは、「個人アカウント」をご覧ください。

  2. (右上で) ユーザー名を選択し、 [API キー] を選択します。

  3. [作成] を選択し、キーの名前を指定して、 [スコープの選択] > [プッシュ] の順に選択します。 [glob パターン] に「*」と入力してから、 [作成] を選択します。 (スコープの詳細については、後述の説明をご覧ください。)

  4. キーが作成されたら、 [コピー] を選択して、CLI で必要となるアクセス キーを取得します。

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

  5. 重要: キーは、後でもう一度コピーできないため、安全な場所に保存してください。 [API キー] ページに戻ったら、キーを再生成してコピーする必要があります。 CLI を通じてパッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。

スコープを使用して、別の目的のために別個の API キーを作成できます。 各キーは有効期限の時間枠を備え、特定のパッケージ (またはの glob パターン) に対してスコープを設定できます。 また、各キーは、新しいパッケージと更新のプッシュ、更新のプッシュのみ、リストからの除外など、特定の操作に対してもスコープを設定します。 スコープを使用して、必要なアクセス許可以外は持たない組織のパッケージ管理を行う別の担当者のために、API キーを作成できます。 詳しくは、「スコープ設定された API キー」をご覧ください。

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

  1. .nupkg ファイルを含むフォルダーに変更します。

  2. 使用するパッケージ名 (一意のパッケージ ID) を指定し、キーの値を使用する API キーに置き換えて、次のコマンドを実行します。

    dotnet nuget push AppLogger.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
    
  3. dotnet により、公開プロセスの結果が表示されます。

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

公開エラー

push コマンドのエラーは、通常、問題があることを示します。 たとえば、プロジェクトのバージョン番号の更新を忘れて、既に存在するパッケージを公開しようとした場合などがあります。

また、ホストに既に存在する識別子を使用してパッケージを公開しようとするとエラーが表示されます。 たとえば、"AppLogger" という名前は既に存在します。 その場合、push コマンドを実行すると、次のエラーが表示されます。

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 キーを使用している場合、エラーの "アクセス許可" 部分では完全には明白ではありませんが、このメッセージは名前の競合を示します。 パッケージ識別子を変更し、プロジェクトをリビルドして、 .nupkg ファイルを再作成した後、push コマンドを再試行します。

公開済みパッケージを管理する

nuget.org のプロファイルから、 [パッケージの管理] を選択して、公開したパッケージを確認します。 確認メールも送信されます。 パッケージがインデックス作成され、他のユーザーが検索して検索結果に表示されるようになるまでには、時間がかかる場合があることに注意してください。 この間、パッケージのページに次のメッセージが表示されます。

このパッケージはまだインデックスされていません。 インデックス作成が完了すると、検索結果に表示され、インストール/復元に使用できるようになります。

これで終了です。 最初の NuGet パッケージが nuget.org に公開され、他の開発者はそれを自身のプロジェクトで使用することができます。

このチュートリアルで作成したパッケージが、実際に有用ではない場合 (空のクラス ライブラリを使用して作成されたパッケージなど)、そのパッケージを一覧から削除して、検索結果に表示されないようにする必要があります。

  1. nuget.org で、ユーザー名 (ページの右上) を選択し、 [パッケージの管理] を選択します。

  2. [公開済み] の一覧から削除するパッケージを見つけて、右側のごみ箱のアイコンを選択します。

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

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

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

他の NuGet ビデオは、Channel 9 および YouTube でご覧いただけます。

次のステップ

無事に、最初の NuGet パッケージを作成できました。

NuGet による提供についてさらに詳しく調べるには、下のリンクを選択してください。