Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.
GitHub AE is currently under limited release.

Arbeiten mit der NuGet-Registrierung

Du kannst die dotnet-Befehlszeilenschnittstelle (command-line interface, CLI) so konfigurieren, dass NuGet-Pakete in der GitHub Packages veröffentlicht werden und in der GitHub Packages gespeicherte Pakete als Abhängigkeiten in einem .NET-Projekt verwendet werden.

Hinweis: GitHub Packages befindet sich derzeit in der Betaversion für GitHub AE.

Bei GitHub Packages authentifizieren

Du benötigst ein Zugriffstoken, um private, interne und öffentliche Pakete zu veröffentlichen, zu installieren und zu löschen.

Du kannst ein personal access token für die Authentifizierung bei GitHub Packages oder bei der GitHub AE-API verwenden. Wenn du ein personal access token erstellst, kannst du dem Token je nach Bedarf verschiedene Bereiche zuweisen. Weitere Informationen über paketbezogene Bereiche für ein personal access token findest du unter Informationen zu Berechtigungen für GitHub-Pakete.

Um dich bei einer GitHub Packages-Registrierung innerhalb eines GitHub Actions-Workflows zu authentifizieren, kannst du Folgendes verwenden:

  • GITHUB_TOKEN, um Pakete zu veröffentlichen, die mit dem Workflowrepository verbunden sind.
  • Ein personal access token (diesem muss mindestens der Bereich read:packages zugeordnet sein), um Pakete zu installieren, die zu anderen privaten Repositorys gehören (auf die GITHUB_TOKEN nicht zugreifen kann)

Authentifizieren in einem GitHub Actions-Workflow

Verwende den folgenden Befehl, um dich bei GitHub Packages in einem GitHub Actions-Workflow mit dem GITHUB_TOKEN zu authentifizieren, anstatt ein hartcodiertes personal access token in einer Datei vom Typ „nuget.config“ im Repository zu verwenden:

dotnet nuget add source --username USERNAME --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.HOSTNAME/OWNER/index.json"

Weitere Informationen zum GITHUB_TOKEN, das in GitHub Actions-Workflows verwendet wird, findest du unter Authentifizierung in einem Workflow.

Authentifizieren mit einem personal access token

Du benötigst ein Zugriffstoken, um private, interne und öffentliche Pakete zu veröffentlichen, zu installieren und zu löschen.

Du kannst ein personal access token für die Authentifizierung bei GitHub Packages oder bei der GitHub AE-API verwenden. Wenn du ein personal access token erstellst, kannst du dem Token je nach Bedarf verschiedene Bereiche zuweisen. Weitere Informationen über paketbezogene Bereiche für ein personal access token findest du unter Informationen zu Berechtigungen für GitHub-Pakete.

Um dich bei einer GitHub Packages-Registrierung innerhalb eines GitHub Actions-Workflows zu authentifizieren, kannst du Folgendes verwenden:

  • GITHUB_TOKEN, um Pakete zu veröffentlichen, die mit dem Workflowrepository verbunden sind.
  • Ein personal access token (diesem muss mindestens der Bereich read:packages zugeordnet sein), um Pakete zu installieren, die zu anderen privaten Repositorys gehören (auf die GITHUB_TOKEN nicht zugreifen kann)

Du musst ein personal access token mit den entsprechenden Bereichen verwenden, um Pakete in GitHub Packages zu veröffentlichen und zu installieren. Weitere Informationen findest du unter Informationen zu GitHub Packages.

Zum Authentifizieren bei GitHub Packages mit der dotnet-Befehlszeilenschnittstelle (CLI) erstellst du eine Datei nuget.config in deinem Projektverzeichnis und gibst unter packageSources GitHub Packages als Quelle für den dotnet CLI-Client an.

Dabei musst du Folgendes ersetzen:

  • USERNAME durch den Namen deines persönlichen Kontos auf GitHub.
  • TOKEN durch dein personal access token
  • OWNER durch den Namen des Benutzer- oder Organisationskontos, das das Repository besitzt, in dem sich dein Projekt befindet
  • HOSTNAME durch den Hostnamen für your enterprise
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="github" value="https://nuget.HOSTNAME/OWNER/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <github>
            <add key="Username" value="USERNAME" />
            <add key="ClearTextPassword" value="TOKEN" />
        </github>
    </packageSourceCredentials>
</configuration>

Veröffentlichen eines Pakets

Du kannst ein Paket in GitHub Packages veröffentlichen, indem du dich mit einer Datei vom Typ nuget.config authentifizierst oder indem du die Befehlszeilenoption --api-key mit deinem personal access token für GitHub verwendest.

Veröffentlichen eines Pakets unter Verwendung eines personal access token für GitHub als API-Schlüssel

Falls du noch nicht über ein PAT verfügst, das du für dein Konto in GitHub AE verwenden kannst, findest du unter Erstellen eines personal access token weitere Informationen.

  1. Erstelle ein neues Projekt.

    dotnet new console --name OctocatApp
  2. Packe das Projekt.

    dotnet pack --configuration Release
  3. Veröffentliche das Paket, und verwende dabei dein personal access token als API-Schlüssel.

    dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg"  --api-key YOUR_GITHUB_PAT --source "github"

Nachdem Du ein Paket veröffentlicht hast, kannst Du das Paket auf GitHub ansehen. Weitere Informationen findest du unter Anzeigen von Paketen.

Veröffentlichen eines Pakets mithilfe einer Datei nuget.config

Bei der Veröffentlichung musst du in deiner CSPROJ-Datei denselben Wert für OWNER verwenden wie in deiner Authentifizierungsdatei nuget.config. Gib die Versionsnummer in deiner CSPROJ-Datei an, oder erhöhe sie, und erstelle dann mit dem Befehl dotnet pack eine NUSPEC-Datei für diese Version. Weitere Informationen zum Erstellen deines Pakets findest du in der Microsoft-Dokumentation unter Erstellen und Veröffentlichen eines Pakets.

  1. Authentifizieren bei GitHub Packages. Weitere Informationen findest Du unter Authentifizieren bei GitHub Packages.

  2. Erstellen Sie ein neues Projekt.

    dotnet new console --name OctocatApp
  3. Füge die spezifischen Informationen deines Projekts in der Datei deines Projekts hinzu, die auf .csproj endet. Dabei musst du Folgendes ersetzen:

    • OWNER durch den Namen des Benutzer- oder Organisationskontos, das das Repository besitzt, mit dem du dein Paket verbinden möchtest.
    • REPOSITORY durch den Namen des Repositorys, mit dem du dein Paket verbinden möchtest.
    • 1.0.0 durch die Versionsnummer des Pakets
    • HOSTNAME durch den Hostnamen für your enterprise
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <PackageId>OctocatApp</PackageId>
        <Version>1.0.0</Version>
        <Authors>Octocat</Authors>
        <Company>GitHub</Company>
        <PackageDescription>This package adds an Octocat!</PackageDescription>
        <RepositoryUrl>https://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
    </Project>
    
  4. Packe das Projekt.

    dotnet pack --configuration Release
  5. Veröffentliche das Paket mit dem key, den du in der Datei nuget.config angegeben hast.

    dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg" --source "github"

Nachdem Du ein Paket veröffentlicht hast, kannst Du das Paket auf GitHub ansehen. Weitere Informationen findest du unter Anzeigen von Paketen.

Veröffentlichen mehrerer Pakete im gleichen Repository

Um mehrere Pakete mit dem gleichen Repository zu verbinden, kannst du die gleiche GitHub-Repository-URL in den Feldern vom Typ RepositoryURL in allen CSPROJ-Projektdateien einfügen. GitHub ermittelt das Repository anhand dieses Felds.

Beispielsweise werden die Projekte OctodogApp und OctocatApp im gleichen Repository veröffentlicht:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PackageId>OctodogApp</PackageId>
    <Version>1.0.0</Version>
    <Authors>Octodog</Authors>
    <Company>GitHub</Company>
    <PackageDescription>This package adds an Octodog!</PackageDescription>
    <RepositoryUrl>https://HOSTNAME/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PackageId>OctocatApp</PackageId>
    <Version>1.0.0</Version>
    <Authors>Octocat</Authors>
    <Company>GitHub</Company>
    <PackageDescription>This package adds an Octocat!</PackageDescription>
    <RepositoryUrl>https://HOSTNAME/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>

Installieren eines Pakets

Das Verwenden von Paketen von GitHub in deinem Projekt ähnelt dem Verwenden von Paketen von nuget.org. Füge deine Paketabhängigkeiten in der CSPROJ-Datei hinzu, und gib dabei den Paketnamen und die Version an. Weitere Informationen zum Verwenden einer CSPROJ-Datei in deinem Projekt findest du in der Microsoft-Dokumentation unter Arbeiten mit NuGet-Paketen.

  1. Authentifizieren bei GitHub Packages. Weitere Informationen findest Du unter Authentifizieren bei GitHub Packages.

  2. Um ein Paket zu verwenden, füge ItemGroup hinzu, und konfiguriere das Feld PackageReference in der CSPROJ-Projektdatei. Ersetze den OctokittenApp-Wert in Include="OctokittenApp" durch deine Paketabhängigkeit, und ersetze den 12.0.2-Wert in Version="12.0.2" durch die Version, die du verwenden möchtest:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <PackageId>OctocatApp</PackageId>
        <Version>1.0.0</Version>
        <Authors>Octocat</Authors>
        <Company>GitHub</Company>
        <PackageDescription>This package adds an Octocat!</PackageDescription>
        <RepositoryUrl>https://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="OctokittenApp" Version="12.0.2" />
      </ItemGroup>
    
    </Project>
    
  3. Du installierst die Pakete mit dem Befehl restore.

    dotnet restore

Problembehandlung

Dein NuGet-Paket wird möglicherweise nicht gepusht, wenn das RepositoryUrl in der CSPROJ-Datei nicht auf das erwartete Repository festgelegt ist.

Wenn du eine NUSPEC-Datei verwendest, musst du sicherstellen, dass sie ein repository-Element mit den erforderlichen Attributen type und url enthält.

Wenn du GITHUB_TOKEN verwendest, um dich bei einer GitHub Packages-Registrierung in einem GitHub Actions-Workflow zu authentifizieren, kann das Token nicht auf Pakete in privaten Repositorys zugreifen, wenn es sich um ein anderes Repository aus dasjenige handelt, in dem der Workflow ausgeführt wird. Um auf Pakete zuzugreifen, die anderen Repositorys zugeordnet sind, musst du stattdessen ein personal access token mit dem Geltungsbereich read:packages definieren und dieses Token als Geheimnis übergeben.

Weitere Informationsquellen