Delen via


Een NuGet-pakket maken met de dotnet CLI

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

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 de AssemblyName.
  • Version is een specifiek versienummer in het formulier Major.Minor.Patch[-Suffix], waarbij -Suffixversies van voorlopige versies worden geïdentificeerd. Als dit niet is opgegeven, is 1.0.0de standaardwaarde .
  • Authors zijn de auteurs van het pakket. Als dit niet is opgegeven, is de standaardwaarde de AssemblyName.
  • Company is bedrijfsgegevens. Als deze niet is opgegeven, is de standaardwaarde de Authors waarde.
  • Product is productinformatie. Als dit niet is opgegeven, is de standaardwaarde de AssemblyName.

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:

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.UsefulStuff in plaats Contoso-Utility-UsefulStuff van of Contoso_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 .Sample toe aan de identificator, zoals in Contoso.Utility.UsefulStuff.Sample.

    Het voorbeeldpakket heeft een afhankelijkheid van het oorspronkelijke pakket. Wanneer u het voorbeeldpakket maakt, voegt u <IncludeAssets> toe met de contentFiles waarde. 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: