使用 NuGet.exe 連接Azure Artifacts feed

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022

Azure Artifacts 幫助你從單一串流中儲存和管理套件。 你可以在團隊內部、跨組織,或是針對現有公開專案公開分享套件。 本文將教你如何透過 NuGet.exe設定專案並驗證你的 Azure Artifacts 訂閱源。

先決條件

產品 需求
Azure DevOps - Azure DevOps 組織。
- Azure DevOps 項目。
- Azure Artifacts 資料饋送。
- 下載並安裝 nuget.exe 版本或更新版本 4.8.0.5385 。 建議使用 NuGet 5.5.x 或更新版本,其中包含與取消和逾時相關的重要錯誤修正。

設定 Azure Artifacts Credential Provider

Azure Artifacts 憑證提供者能安全認證您的 Azure Artifacts 資料。 要搭配 nuget.exe使用,必須先將其加入 NuGet 的外掛搜尋路徑。 詳情請參見 外掛安裝與發現。 外掛加入後,請依照以下作業系統的安裝步驟操作:

請使用以下方法之一安裝 Azure Artifacts 憑證提供者:

手動安裝

  1. 下載最新的 Microsoft.NetFx48.NuGet.CredentialProvider.zip 版本。

  2. 擷取 zip 檔案。

  3. 將解壓壓縮檔中的資料夾複製 netfx 到 %UserProfile%/.nuget/plugins/。 這個 netfx 資料夾是為了 nuget.exe 相容性所必需的。

使用 Helper 腳本安裝

或者,你也可以使用輔助腳本來自動化安裝。 請確保你有 PowerShell 5.1 或更新版本,然後執行:

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

欲了解更多資訊,請參閱 Azure Artifacts憑證提供者 資料庫。

項目設定

請依照以下步驟設定你的專案,並將你的訂閱源加入檔案 nuget.config ,讓 NuGet 知道該在哪裡還原和發佈套件。 你使用的訂閱源網址取決於你的訂閱源是針對專案還是組織。

  1. 登入您的 Azure DevOps 組織,然後流覽至您的專案。

  2. 選取 構件,然後從下拉選單中選取您的資料流。

  3. 選取 [連線至摘要],然後從左側瀏覽窗格中選取 [NuGet.exe]。

  4. 在你的專案中新增一個 nuget.config 檔案,並將它放在與你的 .csproj 或 .sln 檔案相同的資料夾中,然後將提供的程式碼片段貼到該檔案中。 您的 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 檔案加入您的專案中,並放在與 .csproj 或 .sln 檔案相同的資料夾內,接著將 專案設定 區段中提供的程式碼片段貼到該檔案中。

備註

Azure Artifacts 憑證提供者需要 NuGet 版本4.8.0.5385或更新版本。 Azure Artifacts 推薦 NuGet 5.5.x 或更新版本,以獲得最佳的相容性和穩定性。

舊版項目設定

如果你使用的是不支援推薦 v3 流程的舊版 NuGet,你仍可透過舊版 v2 端點和個人存取權杖(PAT)連接你的串流。 只有當你無法轉給新客戶時才會用這種方法。

  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,請先用 Microsoft Entra 憑證驗證,然後使用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 feed 進行認證,請設定 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>"
        }
    ]
}
'@