Anteckning
Å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.
Med Microsoft Visual Studio kan du skapa ett NuGet-paket från ett .NET-klassbibliotek och sedan publicera det till nuget.org med hjälp av ett CLI-verktyg.
Snabbstarten är endast avsedd för Windows-användare. Om du använder en Mac använder du .NET CLI-.
Förutsättningar
- Installera Visual Studio 2022 för Windows med en .NET Core-relaterad arbetsbelastning. - Du kan installera 2022 Community Edition kostnadsfritt från visualstudio.microsoft.comeller använda Professional- eller Enterprise-utgåvan. - Visual Studio 2017 och senare innehåller automatiskt NuGet-funktioner när du installerar en . NET-relaterad arbetsbelastning. 
- Installera .NET CLI om det inte redan är installerat. - För Visual Studio 2017 och senare installeras .NET CLI automatiskt med alla .NET Core-relaterade arbetsbelastningar. Annars installerar du .NET Core SDK för att hämta .NET CLI. .NET CLI krävs för .NET-projekt som använder SDK-format (SDK-attribut). Standardmallen för .NET-klassbibliotek i Visual Studio 2017 och senare använder SDK-attributet. - Viktig - Om du arbetar med ett icke-SDK-liknande projekt följer du procedurerna i Skapa och publicera ett .NET Framework-paket (Visual Studio) i stället för att skapa och publicera paketet. I den här artikeln rekommenderas .NET CLI. Även om du kan publicera alla NuGet-paket med Hjälp av NuGet CLI, är vissa av stegen i den här artikeln specifika för SDK-liknande projekt och .NET CLI. NuGet CLI används för icke-SDK-liknande projekt (vanligtvis .NET Framework). 
- Registrera dig för ett kostnadsfritt konto på nuget.org om du inte redan har ett konto. Du måste registrera och bekräfta kontot innan du kan ladda upp ett NuGet-paket. 
- Installera NuGet CLI genom att ladda ned det från nuget.org. Lägg till nuget.exe-filen i en lämplig mapp och lägg till den mappen i path-miljövariabeln. 
Skapa ett klassbiblioteksprojekt
Du kan använda ett befintligt .NET-klassbiblioteksprojekt för den kod som du vill paketera eller skapa ett på följande sätt:
- I Visual Studio väljer du File>New>Project. 
- I fönstret Skapa ett nytt projekt väljer du C#, Windowsoch Library i listrutorna. 
- I den resulterande listan över projektmallar väljer du Klassbibliotek (med beskrivningen Ett projekt för att skapa ett klassbibliotek som är avsett för .NET eller .NET Standard) och väljer sedan Nästa. 
- I fönstret Konfigurera ditt nya projekt anger du AppLogger för Projektnamnoch väljer sedan Nästa. 
- I fönstret Ytterligare information väljer du ett lämpligt ramverkoch sedan Skapa. - Om du är osäker på vilket ramverk du ska välja är det senaste ett bra val och kan enkelt ändras senare. Information om vilket ramverk som ska användas finns i När du ska välja .NET 5.0 eller .NET 6.0 eller .NET Standard. 
- För att säkerställa att projektet har skapats korrekt väljer du Build>Build Solution. DLL:en finns i mappen Felsökning (eller Släpp om du skapar den konfigurationen i stället). 
- (Valfritt) För den här snabbstarten behöver du inte skriva någon ytterligare kod för NuGet-paketet eftersom mallklassbiblioteket räcker för att skapa ett paket. Men om du vill ha en funktionskod för paketet inkluderar du följande kod: - namespace AppLogger { public class Logger { public void Log(string text) { Console.WriteLine(text); } } }
Konfigurera paketegenskaper
När du har skapat projektet kan du konfigurera NuGet-paketegenskaperna genom att följa dessa steg:
- Välj projektet i Solution Exploreroch välj sedan Project><projektnamn> Egenskaper, där <projektnamn> är namnet på projektet. 
- Expandera noden Package och välj sedan Allmänt. - Noden Package visas endast för SDK-projekt i Visual Studio. Om du riktar in dig på ett icke-SDK-projekt (vanligtvis .NET Framework) antingen migrera projekteteller se Skapa och publicera ett .NET Framework-paket för stegvisa instruktioner.   
- För paket som skapats för offentlig användning bör du särskilt uppmärksamma egenskapen Taggar, eftersom taggar hjälper andra att hitta ditt paket och förstå vad det gör. 
- Ge ditt paket ett unikt paket-ID och fyll i andra önskade egenskaper. En tabell som visar hur MSBuild-egenskaper (SDK-projekt) mappas till .nuspec filens egenskaper finns i förpackningsmål. En beskrivning av .nuspec filegenskaper finns i filreferensen .nuspec. Alla dessa egenskaper hamnar i det - .nuspecmanifest som Visual Studio skapar för projektet.- Viktig - Du måste ge paketet en identifierare som är unik för nuget.org eller vilken värd du använder. Annars uppstår ett fel. I den här snabbstarten rekommenderar vi att du inkluderar Sample eller Test i namnet eftersom publiceringssteget gör paketet offentligt synligt. 
- (Valfritt) Om du vill se egenskaperna direkt i projektfilen AppLogger.csproj väljer du Project>Edit Project File. - Fliken AppLogger.csproj läses in. - Det här alternativet är tillgängligt från och med Visual Studio 2017 för projekt som använder attributet SDK-format. För tidigare Visual Studio-versioner måste du välja Project>Ladda ur projekt innan du kan redigera projektfilen. 
Kör packkommandot
Följ dessa steg för att skapa ett NuGet-paket från projektet:
- Välj Build>Configuration Manageroch ange sedan Active-lösningskonfigurationen till Release. 
- Välj AppLogger-projektet i Solution Exploreroch välj sedan Pack. - Visual Studio skapar projektet och skapar filen .nupkg. 
- Undersök fönstret Utdata för detaljer, vilket innehåller sökvägen till paketfilen. I det här exemplet finns den inbyggda sammansättningen i bin\Release\net6.0 som passar ett .NET 6.0-mål: - 1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------ 1>AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\net6.0\AppLogger.dll 1>Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\AppLogger.1.0.0.nupkg'. ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
- Om du inte ser kommandot Pack på menyn är projektet förmodligen inte ett SDK-projekt, och du måste använda NuGet CLI. Antingen migrera projektet och använda .NET CLI, eller se Skapa och publicera ett .NET Framework-paket för stegvisa instruktioner. 
(Valfritt) Generera paket vid bygge
Du kan konfigurera Visual Studio för att automatiskt generera NuGet-paketet när du skapar projektet:
- Välj projektet i Solution Exploreroch välj sedan Project><projektnamn> Egenskaper, där <projektnamn> är namnet på projektet (AppLogger i det här fallet). 
- Expandera noden Package, välj Allmäntoch välj sedan Generera NuGet-paket på build-.   
Anteckning
När du automatiskt genererar paketet ökar den extra tiden att packa den totala byggtiden för projektet.
(Valfritt) Paket med MSBuild
Som ett alternativ till att använda menykommandot Pack stöder NuGet 4.x+ och MSBuild 15.1+ ett pack mål när projektet innehåller nödvändiga paketdata:
- När projektet är öppet i Solution Exploreröppnar du en kommandotolk genom att välja Tools>Command Line>Developer Command Prompt. - Kommandotolken öppnas i projektkatalogen. 
- Kör följande kommando: - msbuild -t:pack.
Mer information finns i Skapa ett paket med MSBuild.
Publicera paketet
När du har skapat en .nupkg--fil publicerar du den till nuget.org med hjälp av antingen .NET CLI eller NuGet CLI, tillsammans med en API-nyckel som hämtats från nuget.org.
Not
- Nuget.org genomsöker alla uppladdade paket efter virus och avvisar paketen om de hittar några 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
Innan du publicerar NuGet-paketet skapar du en API-nyckel:
- Logga in på ditt nuget.org konto eller skapa ett konto om du inte redan har ett konto. 
- Välj användarnamnet uppe till höger och välj sedan API-nycklar. 
- Välj Skapaoch ange ett namn på nyckeln. 
- Under Välj omfång, välj Push. 
- Under Välj paket>Glob Patternskriver du *. 
- Välj Skapa. 
- Välj Kopiera för att kopiera den nya nyckeln.   
Viktig
- Behåll alltid din API-nyckel som en hemlighet. API-nyckeln är som ett lösenord som gör att vem som helst kan 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.
Omfattning låter dig 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.
För mer information, se omfångsbegränsade API-nycklar.
Publicera med .NET CLI eller NuGet CLI
Med vart och ett av följande CLI-verktyg kan du skicka ett paket till servern och publicera det. Välj fliken för CLI-verktyget, antingen .NET CLI- eller NuGet CLI-.
Att använda .NET CLI (dotnet.exe) är det rekommenderade alternativet till att använda NuGet CLI.
Kör följande kommando från mappen som innehåller filen .nupkg. Ange din .nupkg filnamn och ersätt nyckelvärdet med din API-nyckel.
dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
Utdata visar resultatet av publiceringsprocessen:
Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.
Mer information finns i dotnet nuget push.
Not
Om du vill 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.
Publicera fel
Fel från kommandot push indikerar vanligtvis problemet. Du kanske till exempel har glömt att uppdatera versionsnumret i projektet, så du försöker publicera ett paket som redan finns.
Du ser också fel om din API-nyckel är ogiltig eller har upphört att gälla, eller om du försöker publicera ett paket med hjälp av en identifierare som redan finns på värden. Anta till exempel att identifieraren AppLogger-test redan finns på nuget.org. Om du försöker publicera ett paket med identifieraren ger kommandot push 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 får det här felet kontrollerar du att du använder en giltig API-nyckel som inte har upphört att gälla. Om så är fallet, anger felet att paketidentifieraren redan finns på värden. Åtgärda felet genom att ändra paketidentifieraren så att den är unik, återskapa projektet, återskapa filen .nupkg och försöka push kommandot igen.
Hantera det publicerade paketet
När paketet har publicerats får du ett e-postmeddelande med bekräftelse. Om du vill se det paket som du precis har publicerat går du till nuget.org, väljer ditt användarnamn uppe till höger och väljer sedan Hantera paket.
Not
Det kan ta en stund 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 har du publicerat ett NuGet-paket för att nuget.org som andra utvecklare kan använda i sina projekt.
Om du har skapat ett paket som inte är användbart (till exempel det här exempelpaketet som skapades med 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 Listning, 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.
Note
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.
Lägga till en readme eller en annan fil
Om du vill ange filer som ska inkluderas direkt i paketet redigerar du projektfilen och lägger till egenskapen content:
<ItemGroup>
  <Content Include="readme.txt">
    <Pack>true</Pack>
    <PackagePath>\</PackagePath>
  </Content>
</ItemGroup>
I det här exemplet anger egenskapen en fil med namnet readme.txt i projektroten. Visual Studio visar innehållet i filen som oformaterad text direkt efter att paketet har installerats. Readme-filer visas inte för paket som installeras som beroenden. Här är till exempel readme för HtmlAgilityPack-paketet:
1 ----------------------------------------------------
2 ---------- Html Agility Pack Nuget Readme ----------
3 ----------------------------------------------------
4
5 ----Silverlight 4 and Windows Phone 7.1+ projects-----
6 To use XPATH features: System.Xml.Xpath.dll from the 3 Silverlight 4 SDK must be referenced.
7 This is normally found at
8 %ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
9 or
10 %ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v4.0\Libraries\Client
11
12 ----Silverlight 5 projects-----
13 To use XPATH features: System.Xml.Xpath.dll from the Silverlight 5 SDK must be referenced.
14 This is normally found at
15 %ProgramFiles(x86)%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client
16 or
17 %ProgramFiles%\Microsoft SDKs\Microsoft SDKs\Silverlight\v5.0\Libraries\Client
Obs
Om du bara lägger till readme.txt i projektroten utan att inkludera den i content-egenskapen för projektfilen tas den inte med i paketet.
Relaterad video
Hitta NuGet-videor på Channel 9 och YouTube.
Grattis till att du har skapat ett NuGet-paket med hjälp av ett Visual Studio .NET-klassbibliotek. Gå vidare till nästa artikel för att lära dig hur du skapar ett NuGet-paket med Visual Studio .NET Framework.
Mer information om vad NuGet har att erbjuda finns i följande artiklar: