连接到 Azure Artifacts 源(NuGet.exe)

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

Azure Artifacts 使开发人员能够从各种源(例如专用源和公共注册表)下载 NuGet 包。 可以将包发布到专用源并控制访问权限,或者创建公共源以公开共享它们。 本文将指导您对您的 Azure Artifacts 包源进行身份验证。

先决条件

产品 要求
Azure DevOps - 一个 Azure DevOps 组织
- Azure DevOps 项目
- Azure Artifacts
- 下载并安装 Azure Artifacts 凭据提供程序
- 安装最新的 NuGet 版本

项目设置

  1. 登录到 Azure DevOps 组织,然后导航到项目。

  2. 选择“ 项目”,然后从下拉菜单中选择源。

  3. 选择 “连接到源”,然后选择左侧的 NuGet.exe

  4. nuget.config 文件添加到项目,将其放置在 csprojsln 文件所在的文件夹中,然后将提供的代码片段粘贴到其中。 nuget.config 文件应如下所示:

    • 项目作用域的源

      <?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>
      
    • 组织作用域的源

      <?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>
      
  1. 登录到 Azure DevOps 集合,然后导航到项目。

  2. 选择“ 项目”,然后从下拉菜单中选择源。

  3. 选择连接到源,然后从左侧导航窗格中选择 NuGet.exe

  4. nuget.config 文件添加到项目,将其放置在 与 csprojsln 文件相同的文件夹中,然后将 “项目设置 ”部分中提供的代码片段粘贴到文件中。

注释

Azure Artifacts 凭据提供程序需要 NuGet 版本4.8.0.5385或更高版本。 为了获得最佳性能,Azure Artifacts 建议使用 NuGet 版本 5.5.x 或更高版本,因为它包括与取消和超时相关的关键 bug 修复。

旧项目设置

如果使用的是旧版 NuGet,请按照以下说明连接到源:

  1. 登录到 Azure DevOps 组织,然后导航到项目。

  2. 选择项目,然后从下拉菜单中选择源。

  3. 选择连接到源,然后从左侧选择NuGet.exe

  4. “项目设置 ”部分复制源 URL,然后替换为 /v3/index.json/v2。 更新的源 URL 应如下所示:

    • 项目作用域的源

      https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2
      
    • 组织作用域的源

      https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2
      
  5. 创建个人访问令牌,确保将其限定为想要访问的正确组织,然后根据需要选择以下范围之一:打包(读取)打包(读取和写入)打包(读取、写入和管理)。

  6. 在命令提示符窗口中运行以下命令,将馈送源添加到 nuget.config 文件:

    nuget sources add -name <FEED_NAME> -source <SOURCE_URL> -username <ANY_STRING_BUT_NOT_NULL> -password <YOUR_PERSONAL_ACCESS_TOKEN>
    
  7. 如果组织连接到 Microsoft Entra ID,必须先使用 AD 凭据进行身份验证,然后使用 setapikey 命令添加个人访问令牌:

    nuget sources add -name <FEED_NAME> -source <SOURCE_URL> -username <AZURE_ACTIVE_DIRECTORY_USERNAME> -password <AZURE_ACTIVE_DIRECTORY_PASSWORD>
    
    nuget setapikey <YOUR_PERSONAL_ACCESS_TOKEN> -source <SOURCE_URL> 
    

使用服务主体进行身份验证

若要使用服务主体通过 Azure Artifacts 馈送进行身份验证,请根据下述示例设置 ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS 环境变量。

这指定你的源 URL、服务主体的应用程序(客户端)ID,以及服务主体证书的主题名称或文件路径(这两个选项中只需其中一个)。

$env:ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS = @'{
    "endpointCredentials": [
        {
            "endpoint": "<FEED_URL>",
            "clientId": "<SERVICE_PRINCIPAL_APPLICATION_(CLIENT)_ID>",
            "clientCertificateSubjectName": "<SERVICE_PRINCIPAL_CERTIFICATE_NAME>",
            "clientCertificateFilePath": "<SERVICE_PRINCIPAL_CERTIFICATE_PATH>"
        }
    ]
}
'@