Snabbstart: Skapa och publicera ett paket med dotnet CLI

Den här snabbstarten visar hur du snabbt skapar ett NuGet-paket från ett .NET-klassbibliotek och publicerar det till nuget.org med hjälp av kommandoradsgränssnittet .NET eller dotnet CLI.

Förutsättningar

  • .NET SDK, som tillhandahåller kommandoradsverktyget dotnet. Från och med Visual Studio 2017 installeras dotnet CLI automatiskt med alla .NET eller .NET Core-relaterade arbetsbelastningar.

  • Ett kostnadsfritt konto på nuget.org. Följ anvisningarna i Lägg till ett nytt enskilt konto.

Skapa ett klassbiblioteksprojekt

Du kan använda ett befintligt .NET klassbiblioteksprojekt för den kod som du vill paketera eller skapa ett enkelt projekt på följande sätt:

  1. Skapa en mapp med namnet AppLogger.
  2. Öppna en kommandotolk och växla till mappen AppLogger . Alla dotnet CLI-kommandon i den här snabbstarten körs som standard på den aktuella mappen.
  3. Ange dotnet new classlib, som skapar ett projekt med det aktuella mappnamnet.

Mer information finns i dotnet new.

Lägga till paketmetadata i projektfilen

Varje NuGet-paket har ett manifest som beskriver paketets innehåll och beroenden. I det sista paketet är manifestet en .nuspec-fil som använder de NuGet-metadataegenskaper som du inkluderar i projektfilen.

Öppna projektfilen .csproj, .fsproj eller .vbproj och lägg till följande egenskaper i den befintliga <PropertyGroup> taggen. Använd dina egna värden som namn och företag och ersätt paketidentifieraren med ett unikt värde.

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

Viktigt!

Paketidentifieraren måste vara unik för nuget.org och andra paketkällor. Publicering gör paketet offentligt synligt, så om du använder exemplet AppLogger-bibliotek eller annat testbibliotek använder du ett unikt namn som innehåller Sample eller Test.

Du kan lägga till valfria egenskaper som beskrivs i NuGet-metadataegenskaper.

Anmärkning

För paket som du skapar för offentlig användning bör du vara särskilt uppmärksam på egenskapen PackageTags. Taggar hjälper andra att hitta ditt paket och förstå vad det gör.

Kör packkommandot

Om du vill skapa ett NuGet-paket eller en .nupkg-fil från projektet kör du kommandot dotnet pack , som också skapar projektet automatiskt.

dotnet pack

Utdata visar sökvägen till .nupkg-filen :

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'.

Generera paket automatiskt vid bygge

Om du vill köra dotnet pack automatiskt när du kör dotnet buildlägger du till följande rad i projektfilen i <PropertyGroup>:

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Publicera paketet

Publicera .nupkg-filen till nuget.org med hjälp av kommandot dotnet nuget push med en API-nyckel som du får från nuget.org.

Anmärkning

  • Nuget.org genomsöker alla uppladdade paket efter virus och avvisar alla paket som innehåller virus. Nuget.org söker också igenom alla befintliga paket i listan med jämna mellanrum.

  • Paket som du publicerar till nuget.org är offentligt synliga för andra utvecklare om du inte avlistar dem. Information om hur du hanterar paket privat finns i Värd för dina egna NuGet-feeds.

Hämta din API-nyckel

  1. Logga in på ditt nuget.org konto eller skapa ett konto om du inte redan har ett.

  2. I det övre högra hörnet väljer du ditt användarnamn och sedan API-nycklar.

  3. Välj Skapa och ange sedan ett namn för nyckeln.

  4. Under Välj omfång väljer du Push.

  5. Under Välj paket för Glob Pattern anger du en asterisk (*).

  6. Välj Skapa.

  7. Välj Kopiera för att kopiera den nya nyckeln.

    Skärmbild av en nuget.org sida som visar den nya API-nyckeln, ett meddelande om att kopiera nyckeln nu och knappen Kopiera, som är markerad.

Viktigt!

  • Behåll alltid din API-nyckel som en hemlighet. API-nyckeln är som ett lösenord som vem som helst kan använda för att hantera paket åt dig. Ta bort eller återskapa DIN API-nyckel om den av misstag avslöjas.
  • Spara nyckeln på en säker plats eftersom du inte kan kopiera nyckeln igen senare. Om du återgår till API-nyckelsidan måste du återskapa nyckeln för att kopiera den. Du kan också ta bort API-nyckeln om du inte längre vill push-överföra paket.

Scope är ett sätt att skapa separata API-nycklar för olika syften. Varje nyckel har en tidsram för förfallotid och du kan omfångsbegränsa nyckeln till specifika paket eller globmönster. Du kan också omfångsbegränsa varje nyckel till specifika åtgärder: Push-överföra nya paket och paketversioner, push-överföra endast nya paketversioner eller ta bort listan.

Genom omfång kan du skapa API-nycklar för olika personer som hanterar paket för din organisation så att de bara har de behörigheter de behöver.

Mer information finns i Omfångs-API-nycklar.

Publicera med dotnet nuget-push

Kör följande kommando från mappen som innehåller .nupkg-filen . Ersätt <package-file> med namnet på .nupkg-filen och ersätt <API-key> med DIN API-nyckel.

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

Utdata visar resultatet av publiceringsprocessen:

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.

Mer information finns i dotnet nuget push.

Publicera fel

När du kör push kommandot uppstår ibland ett fel. Du kan till exempel få ett fel i följande situationer:

  • DIN API-nyckel är ogiltig eller har upphört att gälla.
  • Du försöker ladda upp ett paket som har en identifierare som redan finns på värdtjänsten.
  • Du gör ändringar i ett publicerat paket, men du glömmer att uppdatera versionsnumret innan du försöker publicera det igen.

Felmeddelandet anger vanligtvis orsaken till problemet.

Anta till exempel att identifieraren Contoso.App.Logger.Test finns på nuget.org. Om du försöker publicera ett paket med identifieraren får du följande fel:

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.).

Om du vill hantera den här situationen kontrollerar du omfånget, förfallodatumet och värdet för din API-nyckel. Om nyckeln är giltig anger felet att paketidentifieraren redan finns på värden. Du kan lösa problemet genom att ändra paketidentifieraren så att den är unik, återskapa projektet, återskapa .nupkg-filen och försöka med kommandot igen push .

Hantera det publicerade paketet

När paketet har publicerats får du ett e-postmeddelande med bekräftelse. Om du vill se det publicerade paketet går du till nuget.org, väljer ditt användarnamn i det övre högra hörnet och väljer sedan Hantera paket.

Anmärkning

Det kan ta ett tag innan paketet indexeras och visas i sökresultat där andra kan hitta det. Under den tiden visas paketet under Ej listade paket, och på paketsidan visas följande meddelande:

Skärmbild av ett nuget.org varningsmeddelande om att paketet inte har publicerats ännu. Texten anger att validering och indexering kan ta en timme.

Nu när NuGet-paketet har publicerats på nuget.org kan andra utvecklare använda det i sina projekt.

Om du skapar ett paket som inte är användbart (till exempel det här exempelpaketet från ett tomt klassbibliotek) eller om du inte vill att paketet ska visas kan du avlista paketet för att dölja det från sökresultat:

  1. När paketet visas under Publicerade paket på sidan Hantera paket väljer du pennikonen bredvid paketlistan.

    Skärmbild av sidan nuget.org-paket. I avsnittet Publicerade paket visas ett paket. Redigeringsikonen är markerad.

  2. På nästa sida väljer du Lista, avmarkerar kryssrutan Lista i sökresultat och väljer sedan Spara.

    Skärmbild av en nuget.org sida. I avsnittet Lista är alternativet för att visa paketet i sökresultat markerat.

Paketet visas nu under Ej listade paket i Hantera paket och visas inte längre i sökresultat.

Anmärkning

För att undvika att testpaketet är aktivt på nuget.org kan du skicka till nuget.org testplatsen på https://int.nugettest.org. Observera att paket som laddats upp till int.nugettest.org kanske inte bevaras.

Grattis till att du har skapat och publicerat ditt första NuGet-paket!

Hitta fler NuGet-videor på Channel 9 och YouTube.

Nästa steg

Se mer information om hur du skapar paket med dotnet CLI:

Få mer information om hur du skapar och publicerar NuGet-paket: