NuGet.exe を使用してコマンド ラインから NuGet パッケージを発行する

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

この記事では、2 つの認証フローを使用してフィードに接続し、パッケージを発行する手順について説明します。独自の組織のフィードのAzure Artifacts資格情報プロバイダーと、別の組織でホストされているフィードの個人用アクセス トークン (PAT) です。

前提 条件

  • Azure DevOps組織。
  • Azure DevOps プロジェクト。
  • Azure Artifacts フィード。
  • 4.8.0.5385 バージョン 以降。 Azure Artifactsは、互換性と信頼性を最大限に高める NuGet 5.5.x 以降を推奨します。
  • パッケージを公開するには、Feed 発行者(投稿者)以上である必要があります。

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

Azure Artifacts資格情報プロバイダーを使用すると、Azure Artifacts フィードへのセキュリティで保護された認証が可能になります。 nuget.exeで使用するには、まず NuGet のプラグイン検索パスに追加する必要があります。 詳細については、「 プラグインのインストールと検出」を参照してください。 プラグインが追加されたら、オペレーティング システムのインストール手順に従います。

Azure Artifacts資格情報プロバイダーをインストールするには、次のいずれかの方法を使用します。

手動インストール

  1. 最新の Microsoft.NetFx48.NuGet.CredentialProvider.zip リリースをダウンロードします。

  2. ZIP ファイルを抽出します。

  3. 抽出したアーカイブからnetfxに%UserProfile%/.nuget/plugins/ フォルダーをコピーします。 nuget.exe の互換性のためには、 netfx フォルダーが必要です。

ヘルパー スクリプトを使用してインストールする

または、自動化されたヘルパー スクリプトを使用して、合理化されたインストールを行うことができます。 PowerShell 5.1 以降があることを確認し、次を実行します。

iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"

詳細については、Azure Artifacts 資格情報プロバイダー リポジトリを参照してください。

フィードに接続する

パッケージを発行する前に、プロジェクトを設定し、次のようにフィードに接続します。

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

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

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

  4. .csprojまたは.sln ファイルと同じフォルダーに、nuget.config ファイルをプロジェクトに追加します。 指定した XML スニペットをファイルに貼り付けます。 スニペットは次のようになります。

    • 組織スコープのフィード:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • プロジェクト スコープのフィード:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_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. [フィード に接続]選択し、左側のナビゲーション ウィンドウから [NuGet.exe] を選択します。

  4. .csprojまたは.sln ファイルと同じフォルダーにnuget.config ファイルをプロジェクトに追加し、指定した XML スニペットをファイルに貼り付けます。

同じ組織内のフィードに発行する

nuget.configを構成し、Azure Artifacts資格情報プロバイダーを使用して認証した後、次のコマンドを実行してパッケージをフィードに発行します。 プレースホルダーを適切な値に置き換えます。

nuget push <PACKAGE_PATH> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>

Example:

nuget push MyPackage.5.0.2.nupkg -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -ApiKey AZ

手記

Azure Artifacts資格情報プロバイダーはプッシュの実際の認証を処理しますが、NuGet では引き続きコマンドを受け入れるために-ApiKey値が必要です。 Azure Artifactsは指定した値を無視するため、空でない文字列が機能します。

別の組織のフィードに発行する

ターゲット フィードが別のAzure DevOps組織にある場合は、その組織で PAT を作成し、フィードをソースとしてnuget.config ファイルに追加します。

  1. Packaging>Read > 書き込みスコープを使用して、ターゲット組織に個人用アクセス トークン (PAT) を作成します。

  2. 次のコマンドを実行して、フィードをソースとして追加します。 このコマンドは PAT を nuget.configに追加するため、ファイルを安全に保存し、ソース管理にチェックインしないでください。

    nuget sources Add -Name <SOURCE_NAME> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -UserName <USER_NAME> -Password <PERSONAL_ACCESS_TOKEN> -config <PATH_TO_NUGET_CONFIG_FILE>
    
  3. 先ほど追加したソース名を使用してパッケージを発行します。

    nuget push <PACKAGE_PATH> -Source <SOURCE_NAME> -ApiKey <ANY_STRING>
    

Example:

nuget sources Add -Name "MySource" -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -UserName MyUserName -Password YourPersonalAccessToken -config ./nuget.config
nuget push nupkgs/mypackage.1.1.8.nupkg -Source MySource -ApiKey AZ

手記

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

Troubleshooting

認証プロンプトが表示されない

Azure Artifacts資格情報プロバイダーがインストールされていて、NuGet バージョン 4.8.0.5385 以降を使用していることを確認します。 セットアップ手順については、「NuGet.exeを使用してAzure Artifacts フィードに接続する」を参照してください。

バージョンが既に存在するため、発行に失敗する

Azure Artifactsのパッケージ バージョンは不変です。 バージョンを発行した後は、パッケージを削除しても、上書きしたり、同じバージョン番号を再利用したりすることはできません。 パッケージのバージョンを更新し、パッケージを再構築してから、もう一度発行します。

ファイアウォールまたはプロキシの背後で発行が失敗する

Azure Artifactsドメイン URL と IP アドレスを許可し、発行操作を再試行します。

発行が 403 エラーで失敗する

通常、このエラーは、アカウントにフィードに対する発行アクセス許可がないことを意味します。 パッケージをプッシュするには、少なくともフィード Publisher (共同作成者) ロールが必要です。 フィード所有者にロールの更新を依頼してから、もう一度やり直してください。