このクイック スタートでは、Microsoft Visual Studioを使用して、.NET クラス ライブラリから NuGet パッケージを作成します。 次に、コマンド ライン インターフェイス (CLI) ツールを使用して、パッケージを nuget.org に発行します。
このクイック スタートは、Windowsユーザーのみを対象としています。 別のプラットフォームを使用している場合は、.NET CLI を使用します。
前提条件
2026年版Visual Studioと.NET関連のワークロード。
visualstudio.microsoft.com から無料で 2026 Community エディションをインストールすることも、Professional または Enterprise エディションを使用することもできます。
Visual Studio 2017 以降では、.NET関連のワークロードをインストールするときに NuGet 機能が自動的に含まれます。
.NET CLI。
Visual Studio 2017 以降では、.NET CLI は、.NET関連のワークロードと共に自動的にインストールされます。 .NET SDK をインストールして、.NET CLI を取得することもできます。 .NET CLI は、SDK スタイルの形式 (および SDK 属性) を使用する.NET プロジェクトに必要です。 Visual Studio 2017 以降の既定の.NET クラス ライブラリ テンプレートでは、SDK 属性が使用されます。
Important
SDK スタイル以外のプロジェクトを使用している場合は、代わりに Visual Studio (.NET Framework,Windows) を使用してパッケージを作成して発行する方法に関するページの手順に従ってパッケージを作成して発行します。 この記事では、.NET CLI をお勧めします。 NuGet CLI を使用して任意の NuGet パッケージを発行できますが、この記事の手順の一部は SDK スタイルのプロジェクトと .NET CLI に固有のものです。 NuGet CLI は、非 SDK スタイルのプロジェクト (通常は .NET Framework プロジェクト) に使用されます。
nuget.org の無料アカウント。NuGet パッケージをアップロードする前に、アカウントを登録して確認する必要があります。
NuGet CLI。 nuget.org からダウンロードしてインストールできます。nuget.exe ファイルを適切なフォルダーに追加し、そのフォルダーを
PATH環境変数に追加します。
クラス ライブラリ プロジェクトを作成する
パッケージ化するコードに既存の .NET クラス ライブラリ プロジェクトを使用することも、次の手順に従って作成することもできます。
Visual Studioで、File>New>Project/Solution を選択します。
[ 新しいプロジェクトの作成 ] ウィンドウで、検索ボックスに移動し、 クラス ライブラリを入力します。
結果のプロジェクト テンプレートの一覧で、次の条件を満たす クラス ライブラリ テンプレートを選択します。
- 説明には、.NETまたは.NET Standardを対象としたクラスライブラリを作成するプロジェクトがあります。
- C# タグがある
次へを選択します。
新しいプロジェクトウィンドウで、プロジェクト名に「AppLogger」と入力し、次へを選択します。
[ 追加情報 ] ウィンドウで、 フレームワークの適切な値を選択し、[ 作成] を選択します。
選択するフレームワークがわからない場合は、最新のフレームワークを選択することをお勧めします。後で簡単に変更できます。 使用するフレームワークの詳細については、「
netx.0とnetstandardをターゲットにするタイミング」を参照してください。(省略可能)このクイック スタートでは、テンプレート クラス ライブラリでパッケージを作成するだけで十分であるため、NuGet パッケージの追加コードを記述する必要はありません。 ただし、機能コードをパッケージに追加する場合は、次のコードを含めます。
namespace AppLogger { public class Logger { public void Log(string text) { Console.WriteLine(text); } } }
パッケージのプロパティを構成する
プロジェクトを作成したら、次の手順に従って NuGet パッケージのプロパティを構成できます。
Solution Explorerでは、 projectを選択し、Project><project-name> プロパティを選択します。ここで、<project-name> はprojectの名前です。
[ パッケージ ] ノードを展開し、[ 全般] を選択します。
Package ノードは、Visual Studio内の SDK スタイルのプロジェクトにのみ表示されます。 SDK 以外のスタイルのプロジェクト (通常は .NET Framework プロジェクト) を対象としている場合は、プロジェクトを移行するかを参照するか、「Visual Studio (.NET Framework、Windows)) を使用してパッケージを作成して発行する」を参照して、詳細な手順を説明します。
&\lt;c2><c1><c0><sb0>Visual Studioのプロジェクト プロパティ ウィンドウのスクリーンショット。NuGet パッケージの全般プロパティ (パッケージ IDやタイトルなど) が表示されます。</sb0></c0></c1></c2>
[パッケージ ID] には、パッケージに一意の ID を指定します。
Important
パッケージには、nuget.org など、使用するホスト全体で一意の識別子を指定する必要があります。それ以外の場合は、エラーが発生します。 このクイック スタートでは、発行手順によってパッケージがパブリックに表示されるため、ID に サンプル または テスト を含めるのをお勧めします。 ID の選択の詳細については、「 パッケージ識別子のベスト プラクティス」を参照してください。
その他の必要なプロパティを入力します。 一般に使用するためにビルドされたパッケージの場合、タグは他のユーザーがパッケージを見つけ、その動作を理解するのに役立つため、 Tags プロパティに特別な注意を払ってください。
すべてのプロパティは、プロジェクト用に作成Visual Studio.nuspec マニフェストに入ります。 SDK スタイル のプロジェクトのMicrosoft Build (MSBuild) プロパティが .nuspec ファイル プロパティにどのようにマップされるかを示す表については、「pack target」を参照してください。 .nuspec ファイルのプロパティの説明については、.nuspec リファレンスを参照してください。
(省略可能)AppLogger.csproj project ファイルでプロパティを直接表示するには、Project>Edit Project File を選択します。
AppLogger.csproj ファイルが新しいタブで開きます。
このオプションは、SDK スタイルの属性を使用するプロジェクトで使用できます。
pack コマンドを実行する
プロジェクトから NuGet パッケージを作成するには、次の手順に従います。
Build>Configuration Manager を選択し、Active solution configuration の値を Release に設定します。
Solution Explorer で、AppLogger プロジェクトを右クリックし、 Pack を選択します。
Visual Studioプロジェクトをビルドし、.nupkg ファイルを作成します。
[ 出力 ] ウィンドウで、パッケージ ファイルへのパスなど、詳細な情報を確認します。 この例では、ビルドされたアセンブリは、.NET 8.0 ターゲットに適した bin\Release\net8.0 フォルダーにあります。
1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------ 1> AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\net8.0\AppLogger.dll 1> Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\Contoso.App.Logger.Test.1.0.0.nupkg'. ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Pack コマンドがメニューにない場合、プロジェクトはおそらく SDK スタイルのプロジェクトではありません。 次のいずれかのステップを使用します。
- .NET CLI を使用できるように、プロジェクトをアップグレードします。
- Visual Studio (.NET Framework、Windows) を使用してパッケージを作成して発行し、NuGet CLI を使用してプロジェクトから NuGet パッケージを作成して発行する手順に従います。
(省略可能)ビルド時にパッケージを生成する
プロジェクトのビルド時に NuGet パッケージを自動的に生成するようにVisual Studioを構成できます。
ソリューション エクスプローラーでプロジェクトを選択し、
プロジェクト を選択します。ここで、project-name プロパティ project-name はプロジェクトの名前です(この場合は AppLogger )。[ パッケージ ] ノードを展開し、[ 全般] を選択し、[ ビルド時に NuGet パッケージを生成] を選択します。
注
このオプションを選択すると、パッケージの生成に必要な時間が長くなり、プロジェクト全体のビルド時間が長くなります。
(省略可能)MSBuild を使用したパック
[パック] メニュー コマンドを使用する代わりに、msbuild -t:pack コマンドを使用して、プロジェクトから NuGet パッケージをビルドできます。 NuGet 4.x 以降と MSBuild 15.1 以降では、プロジェクトに必要なパッケージ データが含まれている場合に、 pack ターゲットがサポートされます。
プロジェクトを Solution Explorer で開いた状態で、コマンド プロンプト ウィンドウを開くには、Tools>Command Line>Developer Command Prompt を選択します。
プロジェクト ディレクトリにコマンド プロンプト ウィンドウが開きます。
次のコマンドを実行します:
msbuild -t:pack
詳細については、「 MSBuild を使用して NuGet パッケージを作成する」を参照してください。
パッケージを発行する
.nupkg ファイルを作成した後、次のセクションの手順に従って nuget.org に発行します。発行には、.NET CLI または NuGet CLI を使用できます。 また、nuget.org から取得した API キーも使用します。
注
Nuget.org は、アップロードされたすべてのパッケージでウイルスをスキャンし、ウイルスを含むパッケージを拒否します。 Nuget.org は、リストされているすべてのパッケージを定期的にスキャンします。
nuget.org に発行するパッケージは、リストを解除しない限り、他の開発者に公開されます。 パッケージを非公開でホストするには、「 独自の NuGet フィードのホスティング」を参照してください。
API キーを取得する
NuGet パッケージを発行する前に、API キーを作成します。
nuget.org アカウントにサインイン するか、まだアカウントがない場合は アカウントを作成 します。
右上隅でユーザー名を選択し、[ API キー] を選択します。
[ 作成] を選択し、キーの名前を入力します。
スコープの選択でプッシュを選択します。
[ パッケージの選択] の [Glob パターン] に、アスタリスク (*) を入力します。
を選択してを作成します。
[ コピー] を選択して新しいキーをコピーします。
Important
- API キーは常にシークレットのままにします。 API キーは、誰でも自分の代わりにパッケージを管理するために使用できるパスワードに似ています。 誤って表示された場合は、API キーを削除または再生成します。
- 後でもう一度キーをコピーできないため、キーを安全な場所に保存します。 API キー ページに戻った場合は、キーを再生成してコピーする必要があります。 パッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。
スコープ を使用すると、さまざまな目的で個別の API キーを作成できます。 各キーには有効期限があり、特定のパッケージまたは glob パターンにキーのスコープを設定できます。 また、各キーのスコープは、新しいパッケージとパッケージ バージョンのプッシュ、新しいパッケージ バージョンのプッシュのみ、またはリストの解除など、特定の操作に限定します。
スコープを使用すると、組織のパッケージを管理するさまざまなユーザーに対して API キーを作成し、必要なアクセス許可のみを持つことができます。
詳細については、「 スコープ付き API キー」を参照してください。
.NET CLI または NuGet CLI を使用して発行する
.NET CLI または NuGet CLI を使用して、パッケージをサーバーにプッシュして発行できます。 使用するツールのタブに移動します。
.NET CLI (dotnet.exe) は、NuGet CLI の代わりに推奨されます。
.nupkg ファイルを含むフォルダーから、次のコマンドを実行します。
<package-file>を .nupkg ファイルの名前に置き換え、<API-key>を API キーに置き換えます。
dotnet nuget push <package-file> --api-key <API-key> --source https://api.nuget.org/v3/index.json
出力には、発行プロセスの結果が表示されます。
Pushing <package-file> to 'https://www.nuget.org/api/v2/package'...
PUT https://www.nuget.org/api/v2/package/
Created https://www.nuget.org/api/v2/package/ 2891ms
Your package was pushed.
詳細については、「 dotnet nuget push」を参照してください。
発行中のエラー
push コマンドを実行すると、エラーが発生することがあります。 たとえば、次のような状況でエラーが発生することがあります。
- API キーが無効であるか、有効期限が切れています。
- ホストに既に存在する識別子を持つパッケージを発行しようとするとします。
- 発行済みパッケージに変更を加えますが、もう一度発行する前にバージョン番号の更新を忘れた場合。
エラー メッセージは通常、問題の原因を示します。
たとえば、識別子 Contoso.App.Logger.Test nuget.org に存在するとします。その識別子を持つパッケージを発行しようとすると、次のエラーが表示されます。
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 で発行されたので、他の開発者はプロジェクトで使用できます。
役に立たないパッケージ (空のクラス ライブラリからのこのサンプル パッケージなど) を作成する場合、またはパッケージを表示したくない場合は、パッケージの 一覧を解除 して検索結果から非表示にすることができます。
パッケージが [パッケージの管理] ページの [発行済みパッケージ ] の下に表示されたら、 パッケージ の一覧の横にある鉛筆アイコンを選択します。
次のページで[ リスト]を選択し、[ 検索結果のリスト ]チェックボックスをオフにして、[ 保存]を選択します。
パッケージは、[パッケージの管理] の [一覧に含まないパッケージ] の下に表示され、検索結果に表示されなくなります。
注
テスト パッケージが nuget.org で稼働しないように、 https://int.nugettest.orgの nuget.org テスト サイトにプッシュできます。int.nugettest.org にアップロードされたパッケージは保持されない場合があることに注意してください。
read-me または別のファイルを追加する
パッケージには、read-me ファイルまたはその他のファイルを含めることができます。
read-me ファイルを追加する
read-me ファイルをパッケージに追加するには、次の手順を実行します。
project ファイルを開くには、Project>Edit Project File を選択します。
プロジェクト ファイルで、
PropertyGroup要素に移動し、PackageReadmeFile子要素を追加します。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> ... <PackageReadmeFile>readme.md</PackageReadmeFile> ... </PropertyGroup> </Project>ItemGroup要素に移動し、None子要素を追加します。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> ... <PackageReadmeFile>readme.md</PackageReadmeFile> ... </PropertyGroup> <ItemGroup> ... <None Include="readme.md" Pack="true" PackagePath="\" /> ... </ItemGroup> </Project>
前の例では、このプロパティはプロジェクト ルート に readme.md という名前のファイルを指定します。 パッケージをビルド、パック、発行すると、nuget.org パッケージ ページに read-me ファイルの内容が表示されます。 Visual Studioでは、そのファイルの内容も Package Manager UI に表示されます。
たとえば、次のスクリーンショットは、 HtmlAgilityPack パッケージの read-me ファイルを示しています。
その他のファイルを追加する
他のファイルをパッケージに追加するには、Project>Edit Project File を選択してproject ファイルを開きます。 次に、 Content 子要素を ItemGroup 要素に追加します。
<ItemGroup>
<Content Include="other-content.md">
<Pack>true</Pack>
<PackagePath>\</PackagePath>
</Content>
</ItemGroup>
詳細については、「パッケージにコンテンツを追加する」を参照してください。
関連するビデオ
パッケージ管理に NuGet を使用する方法のビデオについては、「.NET初心者向け NuGet を使用したパッケージ管理および NuGet for Beginners を参照してください。
関連するコンテンツ
Visual Studio .NET Framework を使用して NuGet パッケージを作成する方法については、「nuget.exe CLI を使用してパッケージを作成するを参照してください。
NuGet の詳細については、次の記事を参照してください。