Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
NuGet-pakketten bevatten code die ontwikkelaars opnieuw kunnen gebruiken in hun projecten. Ongeacht wat uw code doet of bevat, gebruikt u een opdrachtregelprogramma, of nuget.exedotnet.exe, om het NuGet-pakket te maken.
In dit artikel wordt beschreven hoe u een pakket maakt met behulp van de dotnet CLI. Vanaf Visual Studio 2017 is de dotnet CLI opgenomen in alle .NET- en .NET Core-workloads. Als u de dotnet CLI of andere NuGet-clienthulpprogramma's wilt installeren, raadpleegt u NuGet-clienthulpprogramma's installeren.
Dit onderwerp is alleen van toepassing op .NET en andere projecten die gebruikmaken van de SDK-indeling. Voor deze projecten gebruikt NuGet informatie uit het projectbestand om een pakket te maken. Zie Pakketten maken met de dotnet CLI of Pakketten maken met Visual Studio voor snelstartgidsen.
De MSBuild msbuild -t:pack-opdracht is functioneel gelijk aan dotnet pack. Zie Een NuGet-pakket maken met MSBuild voor meer informatie over het maken van een pakket met MSBuild.
Opmerking
Zie Een pakket maken met behulp van de nuget.exe CLI of een pakket maken en publiceren met Behulp van Visual Studio (.NET Framework) als u pakketten wilt maken en publiceren voor projecten die niet van SDK-stijl zijn.
Gebruik voor projecten die zijn gemigreerd van packages.config naar PackageReference
msbuild -t:pack. Zie Een pakket maken na de migratie voor meer informatie.
Eigenschappen instellen
U kunt een voorbeeld van een klassebibliotheekproject maken met behulp van de dotnet new classlib opdracht en het project verpakken met behulp van dotnet pack. De dotnet pack opdracht maakt gebruik van de volgende eigenschappen. Als u geen waarden opgeeft in het projectbestand, gebruikt de opdracht standaardwaarden.
-
PackageId, moet de pakket-id uniek zijn op nuget.org en andere platforms die het pakket hosten. Als u geen waarde opgeeft, gebruikt de opdracht deAssemblyName. -
Versionis een specifiek versienummer in het formulierMajor.Minor.Patch[-Suffix], waarbij-Suffixversies van voorlopige versies worden geïdentificeerd. Als dit niet is opgegeven, is1.0.0de standaardwaarde . -
Authorszijn de auteurs van het pakket. Als dit niet is opgegeven, is de standaardwaarde deAssemblyName. -
Companyis bedrijfsgegevens. Als deze niet is opgegeven, is de standaardwaarde deAuthorswaarde. -
Productis productinformatie. Als dit niet is opgegeven, is de standaardwaarde deAssemblyName.
In Visual Studio kunt u deze waarden instellen in de projecteigenschappen. Klik met de rechtermuisknop op het project in Solution Explorer, selecteer Eigenschappen en selecteer vervolgens de sectie Pakket . U kunt de eigenschappen ook rechtstreeks toevoegen aan het .csproj - of ander projectbestand.
In het volgende voorbeeld ziet u een projectbestand met pakketeigenschappen toegevoegd.
<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>
U kunt andere optionele eigenschappen toevoegen, zoals Title, PackageDescriptionen PackageTags.
Opmerking
Voor pakketten die u bouwt voor openbaar gebruik, besteed speciale aandacht aan de PackageTags eigenschap. Met tags kunnen anderen uw pakket vinden en begrijpen wat het doet.
Met de dotnet pack opdracht worden PackageReferences in uw projectbestanden automatisch geconverteerd naar afhankelijkheden in het gemaakt pakket. U kunt bepalen welke assets u wilt opnemen via de IncludeAssetsen ExcludeAssetsPrivateAssets tags. Zie Afhankelijkheidsassets beheren voor meer informatie.
Zie voor meer informatie over afhankelijkheden, optionele eigenschappen en versiebeheer:
- Pakketverwijzingen in projectbestanden
- Pakketversiebeheer
- Eigenschappen van NuGet-metagegevens
- MSBuild pack doelen
Kies een unieke pakket-id en stel het versienummer in
De pakket-id en het versienummer identificeren de exacte code die in het pakket is opgenomen.
Volg deze aanbevolen procedures om de pakket-id te maken:
De id moet uniek zijn voor nuget.org en alle andere locaties waarop het pakket wordt gehost. Om conflicten te voorkomen, is het een goed patroon om uw bedrijfsnaam te gebruiken als het eerste deel van de id.
Volg een .NET-soortgelijke naamconventie met behulp van dot-notatie. Gebruik bijvoorbeeld
Contoso.Utility.UsefulStuffin plaatsContoso-Utility-UsefulStuffvan ofContoso_Utility_UsefulStuff. Het is ook handig voor consumenten als u de pakket-id koppelt aan de naamruimte die door de code wordt gebruikt.Als u een pakket met voorbeeldcode produceert dat laat zien hoe u een ander pakket gebruikt, voegt u
.Sampletoe aan de identificator, zoals inContoso.Utility.UsefulStuff.Sample.Het voorbeeldpakket heeft een afhankelijkheid van het oorspronkelijke pakket. Wanneer u het voorbeeldpakket maakt, voegt u
<IncludeAssets>toe met decontentFileswaarde. Rangschik in de inhoudsmap de voorbeeldcode in een map met de naam \Samples\<identifier>, zoals \Samples\Contoso.Utility.UsefulStuff.Sample.
Volg deze aanbevolen procedures om de pakketversie in te stellen:
Stel in het algemeen de pakketversie in op overeenstemming met de project- of assemblyversie, hoewel dit niet strikt vereist is. Het aanpassen van de versie is eenvoudig wanneer u een pakket beperkt tot één assembly. NuGet zelf behandelt pakketversies bij het oplossen van afhankelijkheden, niet assemblyversies.
Als u een niet-standaardversieschema gebruikt, moet u rekening houden met de NuGet-versiebeheerregels , zoals uitgelegd in pakketversiebeheer. NuGet is voornamelijk Semantic Versioning 2.0.0-compliant.
Opmerking
Zie Afhankelijkheidsresolutie met PackageReference voor meer informatie over afhankelijkheidsoplossing. Zie deze reeks blogberichten voor informatie die u kan helpen bij het begrijpen van versiebeheer:
Een optioneel beschrijvingsveld toevoegen
De optionele beschrijving van het pakket wordt weergegeven op het tabblad README van de nuget.org pagina van het pakket. De beschrijving wordt opgehaald uit het <Description> projectbestand of het $description in het .nuspec-bestand.
In het volgende voorbeeld ziet u een Description in het .csproj-bestand voor een .NET-pakket:
<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://learn.microsoft.com/azure/storage/
Microsoft Azure Storage REST API Reference - https://learn.microsoft.com/rest/api/storageservices/
REST API Reference for Blob Service - https://learn.microsoft.com/rest/api/storageservices/blob-service-rest-api
</Description>
</PropertyGroup>
</Project>
Voer de opdracht Pack uit
Als u het NuGet-pakket of het .nupkg-bestand wilt bouwen, voert u de opdracht dotnet pack uit vanuit de projectmap, waarmee het project ook automatisch wordt gemaakt.
dotnet pack
De uitvoer toont het pad naar het .nupkg-bestand :
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'.
Automatisch pakket genereren tijdens het bouwen
Als u dotnet pack automatisch wilt uitvoeren wanneer u dotnet build uitvoert, voegt u de volgende regel toe aan het projectbestand in de <PropertyGroup> tag.
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
Opmerking
Wanneer u het pakket automatisch genereert, verhoogt het inpakken de buildtijd voor uw project.
Een oplossing dotnet pack uitvoeren, pakt alle projecten in de oplossing die verpakt kunnen worden, dat wil zeggen, de IsPackable-eigenschap ingesteld op true.
Installatie van het testpakket
Voordat u een pakket publiceert, moet u het installeren van het pakket testen in een project. Testen zorgt ervoor dat de benodigde bestanden op de juiste plaatsen in het project terechtkomen.
Test de installatie handmatig in Visual Studio of op de opdrachtregel met behulp van het normale installatieproces van het pakket.
Belangrijk
U kunt pakketten niet meer wijzigen nadat deze zijn gemaakt. Als u een probleem verhelpt, wijzigt u de inhoud van het pakket en verpakt u het opnieuw.
Nadat u het pakket opnieuw hebt gemaakt, blijft bij het opnieuw testen de oude versie van het pakket gebruikt worden totdat u uw globale pakketten map leegt. Het wissen van de map is vooral belangrijk voor pakketten die geen uniek prereleaselabel gebruiken voor elke build.
Volgende stappen
Zodra u het pakket hebt gemaakt, kunt u het .nupkg-bestand publiceren naar de host van uw keuze.
Zie de volgende artikelen voor manieren om de mogelijkheden van uw pakket uit te breiden of andere scenario's te ondersteunen:
- Pakketversiebeheer
- Ondersteuning voor meerdere doelframeworks
- Een pakketpictogram toevoegen
- Transformaties van bron- en configuratiebestanden
- Lokalisatie
- Pre-release versies
- Pakkettype instellen
- MSBuild props en doelen
- Pakketten maken met COM-interop-assemblies
- Systeemeigen pakketten maken
- Symboolpakketten maken (.snupkg)