Freigeben über


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.exeaus, 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.exefolgt 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.exefolgt 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` sources 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.

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. 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.exefolgt 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: