连接到 Azure Artifacts 源 (NuGet.exe)

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

Azure Artifacts 使开发人员能够从各种源(包括馈送和公共注册表)发布和下载 NuGet 包。 可以使用私有 Azure Artifacts 源与团队或特定用户私下共享包。 此外,你还可以创建公开源来使软件包可以公开访问,从而允许你与互联网上的任何人共享它们。 本文将指导你连接到 Azure Artifacts 源。

先决条件

项目设置

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

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

  3. 选择“连接到源”,然后从左侧面板中选择 NuGet.exe

  4. 如果这是你第一次将 Azure Artifacts 与 NuGet.exe一起使用,请确保已安装必备组件,否则请选择 获取右上角的工具 进行安装。

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

    • 项目作用域的源

      <?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. 按照项目设置部分中的说明连接到源。

  1. 登录到 Azure DevOps 服务器,然后导航到项目。

  2. 选择“项目”,然后选择源。

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

  4. 按照提供的说明将包源 URL 添加到 nuget.config 文件。

重要

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> 
    

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

若要使用服务主体进行身份验证,必须先安装 Artifacts 凭据提供程序

设置 ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS 环境变量,如下所示,指定源 URL、服务主体的应用程序(客户端)ID 以及服务主体证书的使用者名称或文件路径。 (证书使用者名称或文件路径之间只需要一个。)

在 PowerShell 中,输入以下代码。

$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>"
        }
    ]
}
'@