Quickstart: Een pakket maken en publiceren met de dotnet CLI

In deze quickstart ziet u hoe u snel een NuGet-pakket maakt op basis van een .NET-klassebibliotheek en publiceert naar nuget.org met behulp van de .NET opdrachtregelinterface of dotnet CLI.

Vereiste voorwaarden

  • De .NET SDK, die het opdrachtregelprogramma dotnet biedt. Vanaf Visual Studio 2017 wordt de dotnet CLI automatisch geïnstalleerd met alle .NET- of .NET Core-gerelateerde workloads.

  • Een gratis account op nuget.org. Volg de instructies bij Een nieuw afzonderlijk account toevoegen.

Een klassebibliotheekproject maken

U kunt een bestaand .NET Class Library-project gebruiken voor de code die u wilt inpakken of als volgt een eenvoudig project maken:

  1. Maak een map met de naam AppLogger.
  2. Open een opdrachtprompt en ga naar de map AppLogger . Alle dotnet CLI-opdrachten in deze quickstart worden standaard uitgevoerd in de huidige map.
  3. Voer dotnet new classlibin, waarmee een project wordt gemaakt met de naam van de huidige map.

Voor meer informatie, zie dotnet new.

Pakketmetagegevens toevoegen aan het projectbestand

Elk NuGet-pakket heeft een manifest dat de inhoud en afhankelijkheden van het pakket beschrijft. In het uiteindelijke pakket is het manifest een .nuspec-bestand , dat gebruikmaakt van de NuGet-metagegevenseigenschappen die u in het projectbestand opneemt.

Open het projectbestand .csproj, .fsproj of .vbproj en voeg de volgende eigenschappen toe binnen de bestaande <PropertyGroup> tag. Gebruik uw eigen waarden voor naam en bedrijf en vervang de pakket-id door een unieke waarde.

<PackageId>Contoso.08.28.22.001.Test</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>

Belangrijk

De pakket-id moet uniek zijn in nuget.org en andere pakketbronnen. Publiceren maakt het pakket openbaar zichtbaar, dus als u de voorbeeldbibliotheek van AppLogger of een andere testbibliotheek gebruikt, gebruikt u een unieke naam die bevat Sample of Test.

U kunt eventueel optionele eigenschappen toevoegen die worden beschreven in eigenschappen van NuGet-metagegevens.

Opmerking

Voor pakketten die u bouwt voor openbaar gebruik, besteed speciale aandacht aan de PackageTags eigenschap. Met tags kunnen anderen uw pakket vinden en begrijpen wat het doet.

Voer de opdracht Pack uit

Als u een NuGet-pakket of .nupkg-bestand wilt maken vanuit het project, voert u de opdracht dotnet pack uit, waarmee het project ook automatisch wordt gebouwd.

dotnet pack

De uitvoer toont het pad naar het .nupkg-bestand :

MSBuild version 17.3.0+92e077650 for .NET
  Determining projects to restore...
  Restored C:\Users\myname\source\repos\AppLogger\AppLogger.csproj (in 64 ms).
  AppLogger -> C:\Users\myname\source\repos\AppLogger\bin\Debug\net6.0\AppLogger.dll
  Successfully created package 'C:\Users\myname\source\repos\AppLogger\bin\Debug\Contoso.08.28.22.001.Test.1.0.0.nupkg'.

Automatisch pakket genereren tijdens het bouwen

Als u dotnet pack automatisch wilt uitvoeren wanneer u dotnet build uitvoert, voegt u de volgende regel toe aan uw projectbestand in <PropertyGroup>:

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Het pakket publiceren

Publiceer uw .nupkg-bestand naar nuget.org met behulp van de opdracht dotnet nuget push met een API-sleutel die u uit nuget.org krijgt.

Opmerking

  • Nuget.org scant alle geüploade pakketten op virussen en weigert alle pakketten die virussen bevatten. Nuget.org scant ook regelmatig alle bestaande vermelde pakketten.

  • Pakketten die u naar nuget.org publiceert, zijn openbaar zichtbaar voor andere ontwikkelaars, tenzij u de lijst met pakketten ongedaan maakt. Als u pakketten privé wilt hosten, raadpleegt u Uw eigen NuGet-feeds hosten.

Uw API-sleutel ophalen

  1. Meld u aan bij uw nuget.org-account of maak een account als u er nog geen hebt.

  2. Selecteer uw gebruikersnaam in de rechterbovenhoek en selecteer vervolgens API-sleutels.

  3. Selecteer Maken en voer een naam in voor uw sleutel.

  4. Selecteer onder Bereiken selecteren, Push.

  5. Voer onder Pakketten selecteren voor Glob-patroon een sterretje (*) in.

  6. Klik op Creëren.

  7. Selecteer Kopiëren om de nieuwe sleutel te kopiëren.

    Schermopname van een nuget.org pagina met de nieuwe API-sleutel, een bericht over het kopiëren van de sleutel nu en de knop Kopiëren, die is gemarkeerd.

Belangrijk

  • Bewaar uw API-sleutel altijd een geheim. De API-sleutel is vergelijkbaar met een wachtwoord dat iedereen namens u kan gebruiken om pakketten te beheren. Verwijder uw API-sleutel of genereer deze opnieuw als deze per ongeluk wordt weergegeven.
  • Sla uw sleutel op een veilige locatie op, omdat u de sleutel later niet meer kunt kopiëren. Als u terugkeert naar de pagina api-sleutel, moet u de sleutel opnieuw genereren om deze te kopiëren. U kunt de API-sleutel ook verwijderen als u pakketten niet meer wilt pushen.

Scoping biedt een manier om afzonderlijke API-sleutels te maken voor verschillende doeleinden. Elke sleutel heeft een verloopperiode, en u kunt de sleutel beperken tot specifieke pakketten of glob-patronen. U kunt ook elke sleutel opgeven voor specifieke bewerkingen: nieuwe pakketten en pakketversies pushen, alleen nieuwe pakketversies pushen of de lijst opheffen.

Door middel van scoping kunt u API-sleutels maken voor verschillende personen die pakketten voor uw organisatie beheren, zodat ze alleen de machtigingen hebben die ze nodig hebben.

Zie voor meer informatie Gescope API-sleutels.

Publiceren met dotnet nuget push

Voer in de map met het .nupkg-bestand de volgende opdracht uit. Vervang <package-file> door de naam van uw .nupkg-bestand en vervang deze door <API-key> uw API-sleutel.

dotnet nuget push <package-file> --api-key <API-key> --source https://api.nuget.org/v3/index.json

De uitvoer toont de resultaten van het publicatieproces:

Pushing <package-file> to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
  Created https://www.nuget.org/api/v2/package/ 2891ms
Your package was pushed.

Zie dotnet nuget push voor meer informatie.

Publicatiefouten

Wanneer u de push opdracht uitvoert, treedt er soms een fout op. Er kan bijvoorbeeld een fout optreden in de volgende situaties:

  • Uw API-sleutel is ongeldig of verlopen.
  • U probeert een pakket te publiceren met een id die al bestaat op de host.
  • U kunt wijzigingen aanbrengen in een gepubliceerd pakket, maar vergeet het versienummer bij te werken voordat u het opnieuw probeert te publiceren.

Het foutbericht geeft doorgaans de bron van het probleem aan.

Stel dat de id Contoso.App.Logger.Test bestaat op nuget.org. Als u probeert een pakket met die id te publiceren, krijgt u de volgende fout:

Response status code does not indicate success: 403 (The specified API key is invalid, has expired, or does not have permission to access the specified package.).

Als u deze situatie wilt oplossen, controleert u het bereik, de vervaldatum en de waarde van uw API-sleutel. Als de sleutel geldig is, geeft de fout aan dat de pakket-id al bestaat op de host. U kunt het probleem oplossen door de pakket-id te wijzigen in uniek, het project opnieuw te bouwen, het .nupkg-bestand opnieuw te maken en de opdracht opnieuw uit te push voeren.

Het gepubliceerde pakket beheren

Wanneer uw pakket is gepubliceerd, ontvangt u een bevestigingsmail. Als u het gepubliceerde pakket wilt zien, gaat u naar nuget.org, selecteert u uw gebruikersnaam in de rechterbovenhoek en selecteert u Vervolgens Pakketten beheren.

Opmerking

Het kan even duren voordat uw pakket is geïndexeerd en wordt weergegeven in zoekresultaten waar anderen het kunnen vinden. Gedurende die tijd wordt uw pakket weergegeven onder Niet-vermelde pakketten en wordt op de pakketpagina het volgende bericht weergegeven:

Schermopname van een nuget.org waarschuwingsbericht over het pakket dat nog niet wordt gepubliceerd. De tekst geeft aan dat validatie en indexering een uur kan duren.

Nu uw NuGet-pakket is gepubliceerd op nuget.org, kunnen andere ontwikkelaars het in hun projecten gebruiken.

Als u een pakket maakt dat niet nuttig is (zoals dit voorbeeldpakket uit een lege klassebibliotheek), of als u niet wilt dat het pakket zichtbaar is, kunt u het pakket opheffen om het te verbergen in zoekresultaten:

  1. Nadat het pakket wordt weergegeven onder Gepubliceerde pakketten op de pagina Pakketten beheren , selecteert u het potloodpictogram naast de pakketvermelding.

    Schermopname van de pagina nuget.org Pakketten. In de sectie Gepubliceerde pakketten wordt één pakket weergegeven. Het pictogram Bewerken is gemarkeerd.

  2. Op de volgende pagina selecteert u Vermelding, schakelt u het selectievakje Lijst in zoekresultaten uit en selecteert u Opslaan.

    Schermopname van een nuget.org pagina. In de sectie Vermelding is de optie voor het weergeven van het pakket in zoekresultaten gemarkeerd.

Het pakket wordt nu weergegeven onder Niet-vermelde pakketten in Pakketten beheren en wordt niet meer weergegeven in zoekresultaten.

Opmerking

Om te voorkomen dat uw testpakket live is op nuget.org, kunt u pushen naar de nuget.org testsite op https://int.nugettest.org. Houd er rekening mee dat pakketten die zijn geüpload naar int.nugettest.org mogelijk niet behouden blijven.

Gefeliciteerd met het maken en publiceren van uw eerste NuGet-pakket.

Meer NuGet-video's vinden op Channel 9 en YouTube.

Volgende stappen 

Zie meer informatie over het maken van pakketten met de dotnet CLI:

Meer informatie over het maken en publiceren van NuGet-pakketten: