共用方式為


教學課程:使用 NuGet 摘要設定 vcpkg 二進位快取

注意

本教學課程使用裝載在 Azure Artifacts 中的 NuGet 摘要,但其他 NuGet 摘要提供者可以使用相同的指示,例如:GitHub Packages,並有一些變更。

vcpkg 支援使用 NuGet 套件摘要,以方便的方式上傳和還原二進位套件。

NuGet 套件摘要具有訪問控制功能,使其很適合用來限制整個組織或工作組資源的存取。 數個雲端記憶體提供者支援 NuGet 摘要,例如 Azure ArtifactsGitHub 套件登錄

在本教學課程中,您將了解如何:

必要條件

  • 終端機
  • vcpkg
  • NuGet 套件摘要,或如果您未提供 Azure DevOps 帳戶,請遵循
  • 終端機
  • vcpkg
  • NuGet 套件摘要,或如果您未提供 Azure DevOps 帳戶,請遵循
  • mono安裝在系統中的套件

1 - 設定 NuGet 摘要

如果您已經有現有的 NuGet 套件摘要,請略過此步驟。

請遵循指示來 設定 Azure Artifacts NuGet 摘要

您也可以使用您選擇的任何其他 NuGet 套件摘要提供者。

2 - 新增 NuGet 來源

注意

在 Linux 上,您必須 mono 執行 nuget.exe。 您可以使用發行版的系統套件管理員進行安裝 mono

vcpkg 會取得它在二進位快取作業期間所使用的可執行檔複本 nuget.exe 。 本教學課程使用 vcpkg 取得的 nuget.exe。 此命令 vcpkg fetch nuget 會視需要輸出 vcpkg 取得 nuget.exe的位置,下載可執行檔。

執行下列命令以將 NuGet 摘要新增為來源、以您選擇的任何名稱取代 ,並以 <feed url> NuGet 摘要的 URL 取代 <feed name>

.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>

執行下列命令以擷取 NuGet 可執行檔案的路徑:

vcpkg fetch nuget

這會提供類似的 C:\path\to\nuget.exe輸出。 記下此路徑。 使用從上一個步驟取得的路徑,執行下列命令:

C:\path\to\nuget.exe sources add -Name <feed name> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` sources add -Name <feed name> -Source <feed url>

提供 API 金鑰

某些提供者要求您使用 API 金鑰將 NuGet 套件推送至摘要。 例如,GitHub 套件需要 GitHub PAT(個人存取令牌)作為 API 金鑰;如果您使用 Azure Artifacts,API 金鑰會 AzureDevOps 改為 。

使用下列命令來設定推送至 NuGet 摘要之所有套件的 API 金鑰,請將 取代 <apiKey> 為您摘要的 API 金鑰。

.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>

執行下列命令以擷取 NuGet 可執行檔案的路徑:

vcpkg fetch nuget

這會提供類似的 C:\path\to\nuget.exe輸出。 記下此路徑。 使用從上一個步驟取得的路徑,執行下列命令:

C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>

提供驗證認證

您的 NuGet 摘要可能需要驗證,才能下載和上傳套件。 如果是這樣,您可以將認證新增為命令的參數 nuget sources add 來提供認證。

例如:

nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText

某些提供者,例如 Azure Artifacts 可能需要不同的驗證方法,請閱讀 驗證至私人 NuGet 摘要 一文以深入瞭解。

nuget.config使用檔案

或者,您可以使用 nuget.config 檔案來設定 NuGet 來源,請遵循下列範本:

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="defaultPushSource" value="<feed url>" />
  </config>
  <apiKeys>
    <add key="<feed url>" value="<apikey>" />
  </apiKeys>
  <packageSources>
    <clear />
    <add  key="<feed name>" value="<feed url>" />
  </packageSources>
  <packageSourcesCredentials>
    <<feed name>>
      <add key="Username" value="<username>" />
      <add key="Password" value="<password>" />
    </<feed name>>
  </packageSourcesCredentials>
</configuration>

範例 nuget.config 檔案:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="defaultPushSource" value="https://contoso.org/packages/" />
  </config>
  <apikeys>
    <add key="https://contoso.org/packages/" value="encrypted_api_key" />
  </apikeys>
  <packageSources>
    <clear />
    <add key="Contoso" value="https://contoso.org/packages/" />
  </packageSources>
  <packageSourcesCredentials>
    <Contoso>
      <add key="Username" value="user" />
      <add key="Password" value="..." />
    </Contoso>
  </packageSourcesCredentials>
</configuration>

vcpkg 要求您在檔案中nuget.config設定 defaultPushSource ,請使用 NuGet 摘要的 URL 作為預設來源來推送二進位套件。

如果您要將套件上傳至 Azure Artifacts NuGet 摘要,請執行 nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>AzureDevOps作為來源的 API 金鑰。 否則,如果您有適當的 API 金鑰,請將 值取代為摘要的適當 API 金鑰。

<clear />新增來源以忽略先前設定的其他值。 如果您想要,您可以在此檔案中定義多個來源,針對每個來源使用 <add key="<feed name>" value="<feed url>" /> 專案。

執行下列命令以使用 nuget.config 檔案新增 NuGet 來源,並將 取代 <path to nuget.config> 為您的檔案路徑 nuget.config

.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>

執行下列命令以擷取 NuGet 可執行檔案的路徑:

vcpkg fetch nuget

這會提供類似的 C:\path\to\nuget.exe輸出。 記下此路徑。 使用從上一個步驟取得的路徑,執行下列命令:

C:\path\to\nuget.exe sources add -ConfigFile <path to nuget.config>
mono `vcpkg fetch nuget | tail -n 1` sources add -ConfigFile <path to nuget.config>

3 - 設定 vcpkg 以使用您的 NuGet 摘要

VCPKG_BINARY_SOURCES設定環境變數,如下所示:

$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

如果您使用檔案 nuget.config ,請改為執行:

$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"

如果您使用檔案 nuget.config ,請改為執行:

set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"

注意

使用 命令的export設定VCPKG_BINARY_SOURCES只會影響目前的殼層會話。 若要讓此變更在會話之間永久完成,您必須將命令新增 export 至殼層的配置檔腳本(例如 ~/.bashrc~/.zshrc)。

export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

如果您使用檔案 nuget.config ,請改為執行:

export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"

就這麼簡單! vcpkg 現在會從 NuGet 摘要上傳或還原套件。

下一步

以下是接下來要嘗試的其他工作: