Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Skapa en mapp med namnet AppLogger.
- Ö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.
- 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
Logga in på ditt nuget.org konto eller skapa ett konto om du inte redan har ett.
I det övre högra hörnet väljer du ditt användarnamn och sedan API-nycklar.
Välj Skapa och ange sedan ett namn för nyckeln.
Under Välj omfång väljer du Push.
Under Välj paket för Glob Pattern anger du en asterisk (*).
Välj Skapa.
Välj Kopiera för att kopiera den nya nyckeln.
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:
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:
När paketet visas under Publicerade paket på sidan Hantera paket väljer du pennikonen bredvid paketlistan.
På nästa sida väljer du Lista, avmarkerar kryssrutan Lista i sökresultat och väljer sedan Spara.
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!
Relaterad video
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: