Azure Pipelines で NuGet パッケージを復元する

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

NuGet パッケージの復元を使用すると、ご利用のすべてのプロジェクトの依存関係を、ソース管理で保存しなくてもインストールできます。 これにより、開発環境をよりクリーンにし、リポジトリのサイズを縮小することができます。 NuGet パッケージは、NuGet の復元タスク、NuGet CLI、または .NET Core CLI を使用して復元できます。 この記事では、クラシックおよび YAML の両方のパイプラインを使用して NuGet パッケージを復元する方法について説明します。

前提条件

フィードから NuGet パッケージを復元する

  1. クラシック パイプライン定義に移動して、[編集] を選択します。

  2. + を選択して、新しいタスクを追加します。 [NuGet] を検索してから、[追加] を選択してタスクをパイプラインに追加します。

  3. タスクに名前を付け、[コマンド] から [復元] を選択します。

  4. [ここで選択したフィード] を選択し、ドロップダウン メニューからフィードを選択します。 独自の構成ファイルを使用する場合は、[自分の NuGet.config 内のフィード] を選択し、その NuGet.config ファイルへのパスを入力します。組織外のフィードで認証する場合はサービス接続を入力します。

  5. NuGet.org のパッケージを含める場合は、[NuGet.org からのパッケージを使用する] チェックボックスを選択します。

  6. 完了したら、[保存してキューに登録] を選択します。

    NuGet 復元タスクを構成する方法を示すスクリーンショット。

注意

クラシック NuGet の復元では、NuGetCommand@2 タスクを使用します。 このバージョンでは、既定で NuGet 4.1.0 が使用されます。 別の NuGet バージョンを使用する場合は、NuGet ツール インストーラー タスクを使用します。

NuGet パッケージをローカルに復元する

.csproj または .sln ファイルが格納されているのと同じフォルダーに nuget.config を配置します。 構成ファイルは次の例のようになります。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <!-- remove inherited connection strings -->
    <clear />
    <!-- add an Azure Artifacts feed -->
    <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/microsoftLearnModule/_packaging/FabrikamFiber/nuget/v3/index.json" />
    <!-- Get packages from NuGet.org -->
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

NuGet パッケージを復元するには、プロジェクト ディレクトリ内で次のコマンドを実行します。

nuget.exe restore

別の組織内のフィードから NuGet パッケージを復元する

別の Azure DevOps 組織内のフィードから NuGet パッケージを復元するには、個人用アクセス トークンを使用して認証する必要があります。

個人用アクセス トークンを作成する

  1. Azure DevOps 組織に移動して、[ユーザー設定]>[個人用アクセス トークン] の順に選択します。

    個人用アクセス トークンを作成する方法を示すスクリーンショット。

  2. [パッケージ (読み取り)] スコープで個人用アクセス トークンを作成し、PAT をクリップボードにコピーします。

    パッケージ (読み取り) アクセス許可を使用して個人用アクセス トークンを作成する方法を示すスクリーンショット。

NuGet パッケージの復元

  1. パイプライン定義に移動し、[NuGet の復元] タスクを選択します。 使用しているタスクがバージョン 2 であることを確認してください。

    NuGet 復元タスクのバージョンを示すスクリーンショット。

  2. [フィードと認証] を選択して、[自分の NuGet.config 内のフィード] を選択します。

  3. NuGet.config ファイルのパスを選択します。

  4. [新規] を選択して、[この組織/コレクション外のフィードの資格情報] を追加します。

    NuGet 回復タスクを構成する方法を示すスクリーンショット。

  5. [外部の Azure DevOps Server] を選択してから、フィード URL (NuGet.config の内容と一致していることを確認してください)、サービス接続名、前に作成した個人用アクセス トークンを入力します。 完了したら、 [保存] を選択します。

    新しいサービス接続を追加する方法を示すスクリーンショット。

  6. 完了したら、[保存してキューに登録] を選択します。

よく寄せられる質問

Q: パイプラインが NuGet パッケージの復元に失敗しますか?

A: NuGet 復元タスクは、いくつかの理由で失敗することがあります。 最も一般的なシナリオは、パイプラインが使っている NuGet バージョンでサポートされていないターゲット フレームワークを必要とする新しいプロジェクトを追加する場合です。 一般に、ローカル開発環境でこのエラーは発生しません。なぜなら、必要に応じて Visual Studio によってソリューションが更新されるためです。 NuGet タスクを必ず最新バージョンにアップグレードしてください。