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.
NuGet-paket innehåller kod som utvecklare kan återanvända i sina projekt. Oavsett vad din kod gör eller innehåller använder du ett kommandoradsverktyg, antingen nuget.exe eller dotnet.exe, för att skapa NuGet-paketet.
I den här artikeln beskrivs hur du skapar ett paket med hjälp av dotnet CLI. Från och med Visual Studio 2017 ingår dotnet CLI med alla .NET- och .NET Core-arbetsbelastningar. Om du behöver installera dotnet CLI eller andra NuGet-klientverktyg kan du läsa Installera NuGet-klientverktyg.
Det här avsnittet gäller endast för .NET och andra projekt som använder SDK-format. För dessa projekt använder NuGet information från projektfilen för att skapa ett paket. Snabbstartsguider finns i Skapa paket med dotnet CLI eller Skapa paket med Visual Studio.
MSBuild msbuild -t:pack-kommandot är funktionellt likvärdigt med dotnet-paketet. Mer information om hur du skapar ett paket med MSBuild finns i Skapa ett NuGet-paket med MSBuild.
Anmärkning
Information om hur du skapar och publicerar paket för icke-SDK-projekt, vanligtvis .NET Framework-projekt, finns i Skapa ett paket med hjälp av nuget.exe CLI eller Skapa och publicera ett paket med Visual Studio (.NET Framework).
För projekt som migrerats från packages.config till PackageReference använder du
msbuild -t:pack. Mer information finns i Skapa ett paket efter migreringen.
Ange egenskaper
Du kan skapa ett exempel på ett klassbiblioteksprojekt med hjälp dotnet new classlib av kommandot och paketera projektet med hjälp dotnet packav . Kommandot dotnet pack använder följande egenskaper. Om du inte anger värden i projektfilen använder kommandot standardvärden.
-
PackageIdmåste paketidentifieraren vara unik för nuget.org och andra mål som är värdar för paketet. Om du inte anger något värde använderAssemblyNamekommandot . -
Versionär ett specifikt versionsnummer i formuläretMajor.Minor.Patch[-Suffix], där-Suffixidentifierar förhandsversioner. Om det inte anges är1.0.0standardvärdet . -
Authorsär författarna av paketet. Om det inte anges ärAssemblyNamestandardvärdet . -
Companyär företagsinformation. Om det inte anges ärAuthorsstandardvärdet. -
Productär produktinformation. Om det inte anges ärAssemblyNamestandardvärdet .
I Visual Studio kan du ange dessa värden i projektegenskaperna. Högerklicka på projektet i Solution Explorer, välj Egenskaper och välj sedan avsnittet Paket . Du kan också lägga till egenskaperna direkt i .csproj eller annan projektfil.
I följande exempel visas en projektfil med paketegenskaper tillagda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageId>UniqueID</PackageId>
<Version>1.0.0</Version>
<Authors>Author Name</Authors>
<Company>Company Name</Company>
<Product>Product Name</Product>
</PropertyGroup>
</Project>
Du kan lägga till andra valfria egenskaper, till exempel Title, PackageDescriptionoch PackageTags.
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.
Kommandot dotnet pack konverterar automatiskt element i dina projektfiler till beroenden i det skapade paketet. Du kan styra vilka tillgångar som ska inkluderas via taggarna IncludeAssetsoch ExcludeAssetsPrivateAssets . Mer information finns i Kontrollera beroendetillgångar.
Mer information om beroenden, valfria egenskaper och versionshantering finns i:
Välj en unik paketidentifierare och ange versionsnumret
Paketidentifieraren och versionsnumret identifierar unikt den exakta kod som finns i paketet.
Följ dessa metodtips för att skapa paketidentifieraren:
Identifieraren måste vara unik för nuget.org och alla andra platser som är värdar för paketet. För att undvika konflikter är ett bra mönster att använda företagets namn som den första delen av identifieraren.
Följ en .NET-namnområdesliknande namngivningskonvention med hjälp av punkt notation. Använd till exempel
Contoso.Utility.UsefulStuffi ställetContoso-Utility-UsefulStuffför ellerContoso_Utility_UsefulStuff. Det är också användbart för konsumenter om du matchar paketidentifieraren med det namnområde som koden använder.Om du skapar ett paket med exempelkod som visar hur du använder ett annat paket lägger du
.Sampletill i identifieraren, som iContoso.Utility.UsefulStuff.Sample.Exempelpaketet har ett beroende av det ursprungliga paketet. När du skapar exempelpaketet lägger du till
<IncludeAssets>med värdetcontentFiles. I innehållsmappen ordnar du exempelkoden i en mapp med namnet \Samples\<identifier>, till exempel \Samples\Contoso.Utility.UsefulStuff.Sample.
Följ dessa metodtips för att ange paketversionen:
I allmänhet anger du paketversionen så att den matchar projektet eller sammansättningsversionen, även om detta inte är absolut nödvändigt. Det är enkelt att matcha versionen när du begränsar ett paket till en enda sammansättning. NuGet hanterar paketversioner när du löser beroenden, inte sammansättningsversioner.
Om du använder ett icke-standardversionsschema bör du överväga NuGet-versionsreglerna enligt beskrivningen i Paketversionshantering. NuGet är mestadels semantisk version 2.0.0-kompatibel.
Anmärkning
Mer information om beroendematchning finns i Beroendematchning med PackageReference. Information som kan hjälpa dig att förstå versionshantering finns i den här serien med blogginlägg:
Lägg till ett valfritt beskrivningsfält
Paketets valfria beskrivning visas på fliken README på paketets nuget.org sida. Beskrivningen hämtas från <Description> i projektfilen eller $description i .nuspec-filen.
I följande exempel visas en Description i .csproj-filen för ett .NET-paket:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PackageId>Azure.Storage.Blobs</PackageId>
<Version>12.4.0</Version>
<PackageTags>Microsoft Azure Storage Blobs;Microsoft;Azure;Blobs;Blob;Storage;StorageScalable</PackageTags>
<Description>
This client library enables working with the Microsoft Azure Storage Blob service for storing binary and text data.
For this release see notes - https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/README.md and https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/CHANGELOG.md
in addition to the breaking changes https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/BreakingChanges.txt
Microsoft Azure Storage quickstarts and tutorials - https://free.blessedness.top/azure/storage/
Microsoft Azure Storage REST API Reference - https://free.blessedness.top/rest/api/storageservices/
REST API Reference for Blob Service - https://free.blessedness.top/rest/api/storageservices/blob-service-rest-api
</Description>
</PropertyGroup>
</Project>
Kör packkommandot
Om du vill skapa NuGet-paketet eller .nupkg-filen kör du dotnet pack-kommandot från projektmappen, 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 D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj (in 97 ms).
Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.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 taggen <PropertyGroup> :
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
Anmärkning
När du genererar paketet automatiskt ökar paketeringen byggtiden för projektet.
När du kör dotnet pack på en lösning paketeras alla projekt i lösningen som är packbara, det vill ex. har IsPackable egenskapen inställd på true.
Testpaketinstallation
Innan du publicerar ett paket bör du testa att installera paketet i ett projekt. Testning säkerställer att de nödvändiga filerna hamnar på rätt platser i projektet.
Testa installationen manuellt i Visual Studio eller på kommandoraden med hjälp av den normala paketinstallationsprocessen.
Viktigt!
Du kan inte ändra paket när de har skapats. Om du korrigerar ett problem ändrar du paketinnehållet och packar om.
När du har återskapat paketet använder omtestning fortfarande den gamla versionen av paketet tills du rensar mappen globala paket. Det är särskilt viktigt att rensa mappen för paket som inte använder en unik förhandsversionsetikett i varje version.
Nästa steg
När du har skapat paketet kan du publicera .nupkg-filen till valfri värd.
I följande artiklar finns olika sätt att utöka funktionerna i ditt paket eller stödja andra scenarier: