Snabbstart: Skapa och publicera ett NuGet-paket med Visual Studio (endast Windows)

I den här snabbstarten använder du Microsoft Visual Studio för att skapa ett NuGet-paket från ett .NET-klassbibliotek. Sedan publicerar du paketet för att nuget.org med hjälp av ett kommandoradsgränssnitt (CLI).

Den här snabbstarten är endast avsedd för Windows användare. Om du använder en annan plattform använder du .NET CLI.

Förutsättningar

  • Visual Studio 2026 med en .NET-relaterad arbetsbelastning.

    Du kan installera 2026 Community Edition kostnadsfritt från visualstudio.microsoft.com, eller så kan du använda Professional- eller Enterprise-utgåvan.

    Visual Studio 2017 och senare inkluderar automatiskt NuGet-funktioner när du installerar en .NET-relaterad arbetsbelastning.

  • .NET CLI.

    För Visual Studio 2017 och senare installeras .NET CLI automatiskt med alla .NET relaterade arbetsbelastningar. Du kan också installera .NET SDK för att hämta .NET CLI. .NET CLI krävs för .NET projekt som använder formatet SDK (och ett 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 paket med Visual Studio (.NET Framework, Windows) 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 non-SDK-liknande projekt (vanligtvis .NET Framework-projekt).

  • Ett kostnadsfritt konto på nuget.org. Du måste registrera och bekräfta kontot innan du kan ladda upp ett NuGet-paket.

  • The NuGet CLI. Du kan installera den genom att ladda ned den från nuget.org. Lägg till nuget.exe-filen i en lämplig mapp och lägg till den mappen i miljövariabeln PATH .

Skapa ett klassbiblioteksprojekt

Du kan använda ett befintligt .NET klassbiblioteksprojekt för den kod som du vill paketera, eller så kan du skapa ett genom att utföra följande steg:

  1. I Visual Studio väljer du File>Ny>Project/Solution.

  2. I fönstret Skapa ett nytt projekt går du till sökrutan och anger klassbiblioteket.

  3. I den resulterande listan över projektmallar väljer du mallen Klassbibliotek som uppfyller följande villkor:

    • Har beskrivningen Ett projekt för att skapa ett klassbibliotek som riktar sig mot .NET eller .NET Standard
    • Har en C#- tagg

    Klicka på Nästa.

  4. I fönstret Konfigurera ditt nya projekt, för Projektnamn, ange AppLogger, och välj sedan Nästa.

  5. I fönstret Ytterligare information väljer du ett lämpligt värde för Framework och väljer 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 du bör använda finns i När du ska välja netx.0 kontra netstandard.

  6. (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 lägga till en funktionskod i 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:

  1. I Solution Explorer, välj din project och välj sedan Project><project-name> Properties, där <project-name> är namnet på din project.

  2. 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-projekt) migrera projektet eller se Skapa och publicera ett paket med hjälp av Visual Studio (.NET Framework, Windows) för stegvisa instruktioner.

    Skärmbild av ett projektegenskaper i Visual Studio. Allmänna egenskaper för ett NuGet-paket visas, till exempel paket-ID och title.

  3. Ge ditt paket ett unikt paket-ID.

    Viktig

    Du måste ge paketet en identifierare som är unik för den värd som du använder, till exempel nuget.org. Annars uppstår ett fel. För den här snabbstarten rekommenderar vi att du inkluderar Exempel eller Test i ID:t eftersom publiceringssteget gör paketet offentligt synligt. Mer information om hur du väljer ett ID finns i Metodtips för paketidentifieraren.

  4. Fyll i andra önskade egenskaper. För paket som skapats för offentlig förbrukning bör du vara särskilt uppmärksam på egenskapen Taggar eftersom taggar hjälper andra att hitta ditt paket och förstå vad det gör.

    Alla egenskaper hamnar i manifestet .nuspec som Visual Studio skapar för projektet. En tabell som visar hur egenskaper för Microsoft Build (MSBuild) i SDK-projekt mappas till .nuspec filegenskaper finns i pack target. En beskrivning av filegenskaperna för .nuspec finns i .nuspec-referens.

  5. (Valfritt) Om du vill se egenskaperna direkt i projektfilen AppLogger.csproj väljer du Project>Edit Project File.

    Filen AppLogger.csproj öppnas på en ny flik.

    Det här alternativet är tillgängligt för projekt som använder attributet SDK-stil.

Kör packkommandot

Följ dessa steg för att skapa ett NuGet-paket från projektet:

  1. Välj Build>Configuration Manager och ange sedan Aktiv lösningskonfiguration till Release.

  2. I Solution Explorer högerklickar du på projektet AppLogger och väljer sedan Pack.

    Visual Studio skapar projektet och skapar filen .nupkg.

  3. Undersök fönstret Utdata för detaljerad information, inklusive sökvägen till paketfilen. I det här exemplet finns den inbyggda sammansättningen i mappen bin\Release\net8.0, vilket är lämpligt för ett .NET 8.0-mål:

    1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------
    1>  AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\net8.0\AppLogger.dll
    1>  Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\Contoso.App.Logger.Test.1.0.0.nupkg'.
    ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
    

Om kommandot Pack saknas på menyn är projektet förmodligen inte ett SDK-projekt. Vidta en av följande åtgärder:

(Valfritt) Generera paket vid bygge

Du kan konfigurera Visual Studio för att automatiskt generera NuGet-paketet när du skapar projektet:

  1. Välj din project i Solution Explorer, och välj sedan Project><project-name> Properties, där <project-name> är namnet på din project (AppLogger i det här fallet).

  2. Expandera noden Package, välj Allmäntoch välj sedan Generera NuGet-paket på build-.

    Skärmbild av ett projektegenskaper i Visual Studio. I avsnittet Allmänna egenskaper är alternativet Generera NuGet-paket på build valt.

Anteckning

När du väljer det här alternativet ökar den extra tid som krävs för att generera paketet den totala byggtiden för projektet.

(Valfritt) Paket med MSBuild

Som ett alternativ till att använda menykommandot Pack kan du använda msbuild -t:pack kommandot för att skapa ett NuGet-paket från projektet. NuGet 4.x+ och MSBuild 15.1+ stöder ett pack mål när projektet innehåller nödvändiga paketdata.

  1. Med projektet öppet i Solution Explorer, öppna kommandotolken genom att välja Tools>Command Line>Developer Command Prompt.

    Kommandotolken öppnas i projektkatalogen.

  2. Kör följande kommando: msbuild -t:pack.

Mer information finns i Skapa ett NuGet-paket med MSBuild.

Publicera paketet

När du har skapat en fil med .nupkg gör du stegen i följande avsnitt för att publicera den till nuget.org. Du kan använda .NET CLI eller NuGet CLI för publicering. Du använder också en API-nyckel som du skaffar från nuget.org.

Anteckning

  • 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

Innan du publicerar NuGet-paketet skapar du en 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älj 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.

Viktig

  • 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 hjälp av .NET CLI eller NuGet CLI

Du kan använda .NET CLI eller NuGet CLI för att skicka ett paket till servern och publicera det. Gå till fliken för det verktyg som du vill använda.

.NET CLI (dotnet.exe) är det rekommenderade alternativet till NuGet CLI.

Kör följande kommando från mappen som innehåller filen .nupkg. 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.

Fel vid publicering

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.

Anteckning

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.

Anteckning

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 read-me eller en annan fil

Du kan inkludera en read-me-fil eller andra filer i paketet.

Lägg till en läs-mig-fil

Utför följande steg för att lägga till en read-me-fil i paketet:

  1. Öppna filen project genom att välja Project>Redigera Project Fil.

  2. I projektfilen går du till PropertyGroup elementet och lägger sedan till ett PackageReadmeFile underordnat element:

    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
            ...
            <PackageReadmeFile>readme.md</PackageReadmeFile>
            ...
        </PropertyGroup>
    </Project>
    
  3. Navigera till ItemGroup-elementet och lägg sedan till ett None-barnelement:

    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
            ...
            <PackageReadmeFile>readme.md</PackageReadmeFile>
            ...
        </PropertyGroup>
    
        <ItemGroup>
            ...
            <None Include="readme.md" Pack="true" PackagePath="\" />
            ...
        </ItemGroup>
    </Project>
    

I föregående exempel anger egenskapen en fil med namnet readme.md i projektroten. När du har skapat, packat och publicerat paketet visar nuget.org innehållet i filen read-me på paketsidan. Visual Studio visar också innehållet i filen i Package Manager användargränssnittet.

Följande skärmbild visar till exempel filen read-me för HtmlAgilityPack paketet:

Skärmbild av det Visual Studio Package Manager användargränssnittet som visar ett paketinformationsfönster. Fliken README beskriver HTML-parsningsfunktionerna i package.

Lägga till andra filer

Om du vill lägga till andra filer i ett paket öppnar du filen project genom att välja Project>Redigera Project fil. Lägg sedan till ett Content underordnat element i elementet ItemGroup :

<ItemGroup>
  <Content Include="other-content.md">
    <Pack>true</Pack>
    <PackagePath>\</PackagePath>
  </Content>
</ItemGroup>

Mer information finns i Inkludera innehåll i ett paket.

Videor om hur du använder NuGet för pakethantering finns i .NET Package Management with NuGet for Beginners and NuGet for Beginners.

Information om hur du skapar ett NuGet-paket med Visual Studio .NET Framework finns i Skapa ett paket med hjälp av nuget.exe CLI.

Mer information om NuGet finns i följande artiklar: