教學課程:使用 NuGet 摘要設定 vcpkg 二進位快取
注意
本教學課程使用裝載在 Azure Artifacts 中的 NuGet 摘要,但其他 NuGet 摘要提供者可以使用相同的指示,例如:GitHub Packages,並有一些變更。
vcpkg 支援使用 NuGet 套件摘要,以方便的方式上傳和還原二進位套件。
NuGet 套件摘要具有訪問控制功能,使其很適合用來限制整個組織或工作組資源的存取。 數個雲端記憶體提供者支援 NuGet 摘要,例如 Azure Artifacts 和 GitHub 套件登錄。
在本教學課程中,您將了解如何:
必要條件
- 終端機
- 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 摘要上傳或還原套件。
下一步
以下是接下來要嘗試的其他工作: