Lernprogramm: Einrichten eines vcpkg-Binärcaches mithilfe eines NuGet-Feeds
Hinweis
Dieses Lernprogramm verwendet einen in Azure Artifacts gehosteten NuGet-Feed, aber die gleichen Anweisungen können für andere NuGet-Feedanbieter verwendet werden, z. B. GitHub-Pakete mit einigen Änderungen.
vcpkg unterstützt die Verwendung von NuGet-Paketfeeds zum Hochladen und Wiederherstellen von Binärpaketen auf bequeme Weise.
NuGet-Paketfeeds verfügen über Zugriffssteuerungsfunktionen, die sie ideal machen, um den Zugriff auf Ressourcen in Ihrer Organisation oder Arbeitsgruppe einzuschränken. NuGet-Feeds werden von mehreren Cloudspeicheranbietern unterstützt, z. B. Azure Artifacts und GitHub-Paketregistrierung.
In diesem Tutorial lernen Sie Folgendes:
Voraussetzungen
- Ein Terminal
- vcpkg
- Ein NuGet-Paketfeed oder wenn sie nicht, ein Azure DevOps-Konto, dem Sie folgen möchten
- Ein Terminal
- vcpkg
- Ein NuGet-Paketfeed oder wenn sie nicht, ein Azure DevOps-Konto, dem Sie folgen möchten
- Das
mono
in Ihrem System installierte Paket
1 – Einrichten eines NuGet-Feeds
Überspringen Sie diesen Schritt, wenn Sie bereits über einen NuGet-Paketfeed verfügen.
Befolgen Sie die Anweisungen zum Einrichten eines Azure Artifacts NuGet-Feeds.
Sie können auch jeden anderen NuGet-Paketfeedanbieter Ihrer Wahl verwenden.
2 – Hinzufügen einer NuGet-Quelle
Hinweis
Unter Linux müssen mono
Sie ausführen nuget.exe
. Sie können die Installation über den Systempaket-Manager Ihrer Verteilung ausführen mono
.
vcpkg erwirbt eine eigene Kopie der ausführbaren Datei, die nuget.exe
sie bei binären Zwischenspeicherungsvorgängen verwendet. In diesem Lernprogramm wird das vcpkg-erworbene Lernprogramm verwendet nuget.exe
. Der vcpkg fetch nuget
Befehl gibt den Speicherort des von vcpkg erworbenen Vcpkg-Pakets nuget.exe
aus, wobei die ausführbare Datei bei Bedarf heruntergeladen wird.
Führen Sie den folgenden Befehl aus, um Ihren NuGet-Feed als Quelle hinzuzufügen, ersetzen <feed name>
Sie durch einen beliebigen Namen Ihrer Wahl und <feed url>
durch die URL zu Ihrem NuGet-Feed.
.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>
Führen Sie den folgenden Befehl aus, um den Pfad zur ausführbaren Datei "NuGet" abzurufen:
vcpkg fetch nuget
Dadurch wird eine Ausgabe bereitgestellt, die ungefähr wie C:\path\to\nuget.exe
folgt aussieht. Notieren Sie sich diesen Pfad.
Führen Sie den folgenden Befehl aus, indem Sie den aus dem vorherigen Schritt abgerufenen Pfad verwenden:
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>
Bereitstellen eines API-Schlüssels
Einige Anbieter erfordern, dass Sie Ihre NuGet-Pakete mithilfe eines API-Schlüssels an den Feed übertragen. Beispielsweise erfordert GitHub-Pakete ein GitHub PAT (Personal Access Token) als API-Schlüssel; Wenn Sie stattdessen Azure Artifacts verwenden, lautet AzureDevOps
der API-Schlüssel.
Verwenden Sie den folgenden Befehl, um den API-Schlüssel für alle Pakete festzulegen, die an Ihren NuGet-Feed übertragen werden, ersetzen Sie <apiKey>
ihn durch den API-Schlüssel Ihres Feeds.
.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>
Führen Sie den folgenden Befehl aus, um den Pfad zur ausführbaren Datei "NuGet" abzurufen:
vcpkg fetch nuget
Dadurch wird eine Ausgabe bereitgestellt, die ungefähr wie C:\path\to\nuget.exe
folgt aussieht. Notieren Sie sich diesen Pfad.
Führen Sie den folgenden Befehl aus, indem Sie den aus dem vorherigen Schritt abgerufenen Pfad verwenden:
C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>
Angeben von Anmeldeinformationen für die Authentifizierung
Ihr NuGet-Feed erfordert möglicherweise eine Authentifizierung, damit Sie Pakete herunterladen und hochladen können. Wenn dies der Fall ist, können Sie Anmeldeinformationen angeben, indem Sie sie als Parameter zum nuget sources add
Befehl hinzufügen.
Zum Beispiel:
nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText
Einige Anbieter wie Azure Artifacts erfordern möglicherweise unterschiedliche Authentifizierungsmethoden, lesen Sie den Artikel "Authentifizieren bei privaten NuGet-Feeds ", um mehr zu erfahren.
Verwenden einer nuget.config
Datei
Alternativ können Sie eine nuget.config
Datei verwenden, um Ihre NuGet-Quellen gemäß der folgenden Vorlage zu konfigurieren:
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>
Beispieldatei für 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 erfordert, dass Sie eine defaultPushSource
in Ihrer nuget.config
Datei festlegen, verwenden Sie die URL Ihres NuGet-Feeds als Standardquelle, um Binärpakete zu pushen.
Wenn Sie Ihre Pakete in einen Azure Artifacts NuGet-Feed hochladen, verwenden Sie AzureDevOps
den API-Schlüssel Ihrer Quelle, indem Sie diesen ausführen nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>
.
Ersetzen Sie andernfalls den Wert durch den richtigen API-Schlüssel Ihres Feeds, falls vorhanden.
Fügen Sie die <clear />
Quelle hinzu, um andere zuvor konfigurierte Werte zu ignorieren. Wenn Sie möchten, können Sie mehrere Quellen in dieser Datei definieren, einen <add key="<feed name>" value="<feed url>" />
Eintrag für jede Quelle verwenden.
Führen Sie den folgenden Befehl aus, um eine NuGet-Quelle mithilfe einer nuget.config
Datei hinzuzufügen, ersetzen Sie <path to nuget.config>
durch den Pfad zu Ihrer nuget.config
Datei:
.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>
Führen Sie den folgenden Befehl aus, um den Pfad zur ausführbaren Datei "NuGet" abzurufen:
vcpkg fetch nuget
Dadurch wird eine Ausgabe bereitgestellt, die ungefähr wie C:\path\to\nuget.exe
folgt aussieht. Notieren Sie sich diesen Pfad.
Führen Sie den folgenden Befehl aus, indem Sie den aus dem vorherigen Schritt abgerufenen Pfad verwenden:
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 – Konfigurieren von vcpkg für die Verwendung Ihres NuGet-Feeds
Legen Sie die VCPKG_BINARY_SOURCES
Umgebungsvariable wie folgt fest:
$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
Wenn Sie eine nuget.config
Datei verwenden, gehen Sie stattdessen folgendermaßen vor:
$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"
Wenn Sie eine nuget.config
Datei verwenden, gehen Sie stattdessen folgendermaßen vor:
set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"
Hinweis
Die Einstellung VCPKG_BINARY_SOURCES
mit dem export
Befehl wirkt sich nur auf die aktuelle Shellsitzung aus. Um diese Änderung dauerhaft in Sitzungen vorzunehmen, müssen Sie den export
Befehl zum Profilskript Ihrer Shell hinzufügen (z. B ~/.bashrc
. oder ~/.zshrc
).
export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
Wenn Sie eine nuget.config
Datei verwenden, gehen Sie stattdessen folgendermaßen vor:
export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
Das war’s! vcpkg lädt jetzt Pakete aus Ihrem NuGet-Feed hoch oder stellt sie wieder her.
Nächste Schritte
Hier sind weitere Aufgaben, die Sie als Nächstes ausprobieren können: