使用 Azure Pipelines 还原 NuGet 包

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

使用 NuGet 包还原可以安装项目的所有依赖项,而无需将其存储在源代码管理中。 这可以使开发环境变得更整洁并减小存储库。 可以使用 NuGet 还原任务、NuGet CLI 或 .NET Core CLI 来还原 NuGet 包。 本文介绍如何使用经典和 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 包

nuget.config 放置在 .csproj.sln 文件所在的同一文件夹中。 配置文件应如以下示例所示:

<?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 中的 URL 匹配)、服务连接名称以及之前创建的个人访问令牌。 完成时选择保存

    显示如何添加新服务连接的屏幕截图。

  6. 完成后,选择“保存并排队”

常见问题解答

问:为何我的管道无法还原 NuGet 包?

答:NuGet 还原任务可能由于多种原因而失败。 最常见的方案是添加需要目标框架的新项目时,你的管道在使用的 NuGet 版本不支持该目标框架。 此故障通常不会在本地开发环境中发生,因为 Visual Studio 会相应地更新你的解决方案。 请确保将你的 NuGet 任务升级到最新版本。