コマンド ラインから NuGet パッケージを発行する (dotnet)

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022

このガイドでは、dotnet コマンド ライン インターフェイスを使用して NuGet パッケージを発行するようにプロジェクトを構成する手順について説明します。

前提 条件

製品 要件
Azure DevOps - Azure DevOps 組織
- Azure DevOps プロジェクト
- Azure Artifacts フィード
- .NET SDK バージョン 9.0.200 以降をダウンロードしてインストールします。

Azure Artifacts資格情報プロバイダーを設定する

フィードで認証するには、まずAzure Artifacts資格情報プロバイダーをインストールする必要があります。 dotnet に含まれているツール インストーラーを使用して、次のコマンドを使用して CLI から資格情報プロバイダーをインストールできます。

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool

リポジトリ レベルの nuget.config がAzure Artifactsソースのみを使用するように構成されている場合は、そのディレクトリの外部から install コマンドを実行するか、nuget.org をソースとして明示的に設定します。

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json

必要に応じて、ツールをメジャー バージョンにピン留めします (再現性が重要なコンテナー イメージなど)。

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --version 2.* --source https://api.nuget.org/v3/index.json

最初の使用

認証を必要とする操作を初めて実行するときは、次のいずれかの方法を使用します。

  1. --interactive を使用してコマンドを実行すると、dotnet がサインインを求めるプロンプトを表示できるようになります。 これは、ほとんどのローカル開発シナリオに推奨されるアプローチです。

対話型コマンドを実行する前に、プロジェクトが設定され、フィードが nuget.configに追加されていることを確認します。セットアップの詳細については、 プロジェクトのセットアップに関するページを参照してください。

プロジェクトが設定され、フィードに接続されたら、プロジェクト ディレクトリに移動して次のコマンドを実行します。

dotnet restore --interactive

このコマンドはユーザーをサインインさせ、セッション トークンを取得します。 サインインが成功した後は、キャッシュされたセッション トークンが有効なまま、 --interactive なしで認証済みコマンドを実行できます。 詳細については、「Session トークンキャッシュの場所を参照してください。

  1. Docker コンテナーやカスタムオートメーションなどの非対話型シナリオでは、environment 変数を使用して資格情報を指定します。

Azure Pipelinesの場合は、NuGetAuthenticate@1 タスクを使用して、dotnet restoredotnet nuget push などのコマンドを実行する前に、フィードに対して認証を行います。 詳細については、「Restore NuGet packages with Azure Pipelines」を参照してください。

フィードを作成する

既にフィードがある場合は、次の手順に進みます。 それ以外の場合は、次の手順に従って新しいものを作成します。

  1. Azure DevOps にサインインし、プロジェクトに移動します。

  2. Artifacts を選択し、フィードを作成します。

  3. フィードのわかりやすい 名前 を入力し、その 可視性 (フィードを使用できるユーザー) を定義します。 フィードの スコープ を指定し、パブリック ソースのパッケージを含める場合は、[ 一般的なパブリック ソースのパッケージを含める ] チェック ボックスをオンにします。

  4. 終わったら [作成] を選択します。

フィードに接続する

フィードにパッケージを発行する前に、Azure Artifacts で認証する必要があります。 次の手順に従ってプロジェクトを設定し、フィードで認証します。

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. [Artifacts] を選択し、ドロップダウン メニューからフィードを選択します。

  3. [フィードに接続する] を選択してから、左側の [NuGet] セクションから [dotnet] を選択します。

  4. csproj または sln ファイルと同じフォルダーに nuget.config ファイルを作成します。 次の XML スニペットをコピーし、プレースホルダーを関連情報に置き換えて、新しいファイルに貼り付けます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
  </packageSources>
</configuration>
  1. Azure DevOps サーバーにサインインし、プロジェクトに移動します。

  2. [Artifacts] を選択し、その後フィードを選択します。

  3. [フィードに接続する] を選択してから、左側のナビゲーション ペインから dotnet を選択します。

  4. Project のセットアップ セクションの手順に従ってフィードに接続します。

    Azure DevOps Server 2020 および 2022 で dotnet を使用してフィードに接続する方法を示すスクリーンショット。

同じ組織内のフィードにパッケージを発行する

次のコマンドを実行して、パッケージをフィードに発行します。 プレースホルダーを適切な値に置き換えます。

dotnet nuget push --source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --api-key <ANY_STRING> <PACKAGE_PATH> 

例の:

dotnet nuget push --source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json --api-key AZ bin/MyPackage.5.0.2.nupkg

手記

api-key パラメーターは、Azure Artifacts フィードに発行するときに必要ですが、任意の文字列を値として使用できます。

別の組織のフィードにパッケージを発行する

NuGet パッケージを別の Azure DevOps 組織のフィードに発行するには、まずターゲット組織で個人用アクセス トークン (PAT) を作成し、新しいパッケージ ソースを構成ファイルに追加してから、発行コマンドを実行する必要があります。

  1. ターゲット フィードをホストしている組織に移動し、[パッケージ化]> スコープで 個人用アクセス トークン (PAT) を作成します。

  2. <PERSONAL_ACCESS_TOKEN> プレースホルダーを個人用アクセス トークンに置き換え、次のコマンドを実行してパッケージ ソースを nuget.config ファイルに追加します。 このファイルが安全に保存され、ソース管理にチェックインされていないことを確認します。

    dotnet nuget add source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --name <SOURCE_NAME> --username <USER_NAME> --password <PERSONAL_ACCESS_TOKEN> --configfile <PATH_TO_NUGET_CONFIG_FILE>
    
  3. 次のコマンドを実行してパッケージを発行します。

    dotnet nuget push --source <SOURCE_NAME> --api-key <ANY_STRING> <PACKAGE_PATH>
    

例の:

dotnet nuget add source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json --name MySource --username MyUserName --password MyPersonalAccessToken --configfile ./nuget.config

dotnet nuget push --source MySource --api-key AZ nupkgs/mypackage.1.1.0.nupkg

手記

組織でファイアウォールまたはプロキシ サーバーを使用している場合は、 Azure Artifacts のドメイン URL と IP アドレス が許可されていることを確認します。