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.
Ongeacht wat uw pakket doet of welke code het bevat, gebruikt u een van de CLI-hulpprogramma's nuget.exe (opdrachtregelinterface) om dotnet.exedie functionaliteit te verpakken in een onderdeel dat kan worden gedeeld met en gebruikt door andere ontwikkelaars. Zie NuGet-clienthulpprogramma's installeren om NuGet CLI-hulpprogramma's te verkrijgen. Visual Studio bevat niet automatisch een CLI-hulpprogramma.
Voor niet-SDK-projecten, meestal .NET Framework-projecten, volgt u de stappen die in dit artikel worden beschreven om een pakket te maken. Zie
nuget.exevoor een quickstart met stapsgewijze instructies voor het gebruik van Visual Studio en de CLI.Voor .NET Core- en .NET Standard-projecten die gebruikmaken van de indeling SDK-stijl en eventuele andere SDK-projecten, raadpleegt u Maak een NuGet-pakket met de dotnet CLI.
Gebruik het
msbuild -t:pack-commando voor projecten die vanpackages.confignaarPackageReferencezijn gemigreerd.
Technisch gezien is een NuGet-pakket een ZIP-bestand waarvan de naam is gewijzigd in de extensie .nupkg en waarvan de inhoud overeenkomt met bepaalde conventies. In dit artikel wordt het gedetailleerde proces beschreven voor het maken van een pakket dat voldoet aan deze conventies.
Pakketten beginnen met de gecompileerde code (assembly's), symbolen en andere bestanden die u als pakket wilt leveren. Zie De werkstroom voor het maken van pakketten voor een overzicht van het verpakkingsproces. Dit proces is onafhankelijk van het compileren of anderszins genereren van de bestanden die naar het pakket gaan. Om de gecompileerde assembly's en pakketten gesynchroniseerd te houden, kunt u gebruikmaken van informatie in een projectbestand.
Belangrijk
Dit artikel is van toepassing op niet-SDK-projecten, meestal andere projecten dan .NET Core- en .NET Standard-projecten die gebruikmaken van Visual Studio 2017 en latere versies en NuGet 4.0+.
Bepaal welke assemblages moeten worden gepackaged
De meeste algemene pakketten bevatten een of meer assembly's die andere ontwikkelaars in hun eigen projecten kunnen gebruiken.
Over het algemeen is het raadzaam om één assembly per NuGet-pakket te hebben, mits elke assembly onafhankelijk nuttig is. Denk bijvoorbeeld aan de volgende gevallen waarbij een assembly met de naam Utilities.dll betrokken is die afhankelijk is van een assembly met de naamParser.dll:
Als Parser.dll zelfstandig nuttig is, maakt u één pakket voor Utilities.dll en één voor Parser.dll. Hierdoor kunnen ontwikkelaars Parser.dll onafhankelijk van Utilities.dllgebruiken.
Als Parser.dll code bevat die alleen door Utilities.dllwordt gebruikt, is het prima om Parser.dll in hetzelfde pakket te houden. Als uw bibliotheek bestaat uit meerdere assembly's die niet onafhankelijk nuttig zijn, kunt u ze in één pakket combineren.
Als Utilities.dll ook afhankelijk is van Utilities.resources.dllen Utilities.resources.dll niet zelfstandig is, plaatst u beide in hetzelfde pakket.
Resources, zoals de Utilities.resources.dll assembly in het voorgaande voorbeeld, zijn een speciaal geval. Wanneer een pakket in een project wordt geïnstalleerd, voegt NuGet automatisch assemblyverwijzingen toe aan de DLL's van het pakket, met uitzondering van de dll's met de naam.resources.dll, omdat ze worden verondersteld om gelokaliseerde satellietassembly's te zijn. Zie Gelokaliseerde NuGet-pakketten maken voor meer informatie over gelokaliseerde versies van een bibliotheek. Vermijd daarom het gebruik van.resources.dll voor bestanden die essentiële pakketcode bevatten.
Als uw bibliotheek COM-assembly's (Component Object Model) bevat, volgt u de aanvullende richtlijnen in NuGet-pakketten maken die COM-interopassembly's bevatten.
De rol en structuur van het .nuspec-bestand
Wanneer u weet welke bestanden u wilt verpakken, is de volgende stap het maken van een pakketmanifest in een .nuspec XML-bestand.
Het manifest:
- Beschrijft de inhoud van het pakket en is zelf opgenomen in het pakket.
- Bepaalt het maken van het pakket en vertelt NuGet hoe het pakket in een project moet worden geïnstalleerd. Het manifest identificeert bijvoorbeeld andere pakketafhankelijkheden, zodat NuGet deze afhankelijkheden ook kan installeren wanneer het hoofdpakket is geïnstalleerd.
- Bevat zowel vereiste als optionele eigenschappen, zoals beschreven in de rest van deze sectie. Zie .nuspec reference voor gedetailleerde informatie, inclusief andere eigenschappen die hier niet worden vermeld.
De volgende eigenschappen zijn vereist in het manifest:
- De pakket-id, die uniek moet zijn in de galerie die als host fungeert voor het pakket
- Een specifiek versienummer in de vorm Major.Minor.Patch[-Suffix], waarbij -Suffixpre-release versies identificeert
- De pakkettitel zoals deze moet worden weergegeven op de host (zoals nuget.org)
- Informatie over de auteur
- Een lange beschrijving van het pakket
De volgende eigenschappen zijn algemene optionele eigenschappen:
- Opmerkingen bij de release.
- Copyrightinformatie.
- Een korte beschrijving voor de gebruikersinterface van Pakketbeheer in Visual Studio.
- Een locale-id.
- Een project-URL.
- Een licentie als expressie of bestand. De
licenseUrleigenschap is afgeschaft. Gebruik in plaats daarvan hetlicensenuspecmetagegevenselement . - Een readme-bestand.
- Een pictogrambestand. De
iconUrleigenschap is afgeschaft. Gebruik in plaats daarvan heticonnuspecmetagegevenselement . - Lijsten met afhankelijkheden en verwijzingen.
- Tags die helpen bij zoekopdrachten in de galerie.
De volgende code is een typisch (maar fictief) .nuspec-bestand , met opmerkingen die de eigenschappen beschrijven:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<!-- An identifier that must be unique within the hosting gallery -->
<id>Contoso.Utility.UsefulStuff</id>
<!-- A package version number that's used when resolving dependencies -->
<version>1.8.3</version>
<!-- A comma-separated list of package authors that sometimes appears directly on the gallery -->
<authors>Dejana Tesic, Rajeev Dey</authors>
<!-- A project URL that provides a link for the gallery -->
<projectUrl>http://github.com/contoso/UsefulStuff</projectUrl>
<!-- License information that's displayed on the gallery -->
<license type="expression">Apache-2.0</license>
<!-- The location of a read-me file that's displayed in the Visual Studio Package Manager UI -->
<readme>readme.md</readme>
<!-- An icon that's used in the Visual Studio Package Manager UI -->
<icon>icon.png</icon>
<!--
A property that when true, prompts the user to accept the license when
installing the package
-->
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!-- Detailed information about a particular release -->
<releaseNotes>Bug fixes and performance improvements</releaseNotes>
<!--
A description that can be used in the Package Manager UI. The
nuget.org gallery uses information you add in the portal.
-->
<description>Core utility functions for web applications</description>
<!-- Copyright information -->
<copyright>Copyright ©2026 Contoso Corporation</copyright>
<!-- Tags that appear in the gallery and can be used for tag searches -->
<tags>web utility http json url parsing</tags>
<!-- Dependencies that are automatically installed when the package is installed -->
<dependencies>
<dependency id="Newtonsoft.Json" version="9.0" />
</dependencies>
</metadata>
<!-- A read-me Markdown file that's displayed in the Package Manager UI -->
<files>
<file src="readme.md" target="" />
<file src="icon.png" target="" />
</files>
</package>
Zie packages.config en pakketversiebeheer voor gedetailleerde informatie over het declareren van afhankelijkheden en het opgeven van versienummers. U kunt ook de include en exclude kenmerken van het dependency element gebruiken om de afhankelijkheidsassets op te geven die u in het pakket wilt opnemen of uitsluiten. Zie .nuspec Reference - Dependencies element voor meer informatie.
Omdat het manifest is opgenomen in het pakket dat ermee is gemaakt, kunt u voorbeelden vinden door bestaande pakketten te onderzoeken. Een goede bron is de map global-packages op uw computer. Gebruik de volgende opdracht om de locatie te vinden:
nuget locals -list global-packages
Nadat u de locatie van de map global-packages weet, voert u de volgende stappen uit om een manifestbestand te vinden:
- Ga naar de map global-packages .
- Ga in die map naar de submap voor elk pakket en ga vervolgens naar een submap voor elke versie van dat pakket.
- Maak in de versiesubmap een kopie van het .nupkg-bestand en wijzig de extensie van de kopie in zip.
- Open het .zip-bestand en bekijk het .nuspec-bestand erin.
Opmerking
Wanneer u een bestand .nuspec maakt op basis van een Visual Studio-project, bevat het manifest tokens die worden vervangen door informatie uit het project wanneer het pakket wordt gebouwd. Zie Maak het nuspec-bestand van een Visual Studio project voor meer informatie.
Het .nuspec-bestand maken
Het maken van een volledig manifest begint meestal met een eenvoudig .nuspec-bestand dat wordt gegenereerd via een van de volgende methoden:
- Een op conventie gebaseerde werkmap
- Een assembly-DLL
- A Visual Studio project
- Een nieuw bestand met standaardwaarden
Vervolgens bewerkt u het bestand handmatig om de exacte inhoud te specificeren die u in het uiteindelijke pakket wilt opnemen.
Belangrijk
Gegenereerde .nuspec-bestanden bevatten tijdelijke aanduidingen die u moet wijzigen voordat u het pakket maakt met behulp van de nuget pack opdracht. Deze opdracht mislukt als het .nuspec-bestand tijdelijke aanduidingen bevat.
Vanuit een conventiegebaseerde werkmap
Omdat een NuGet-pakket een ZIP-bestand is dat is hernoemd met de extensie .nupkg , is het vaak het eenvoudigst om de gewenste mapstructuur te maken op uw lokale bestandssysteem en vervolgens het .nuspec-bestand rechtstreeks vanuit die structuur te maken. Met de nuget pack opdracht worden vervolgens automatisch alle bestanden in die mapstructuur toegevoegd, maar worden alle mappen uitgesloten die beginnen met een punt, zodat u privébestanden in dezelfde structuur kunt bewaren.
Het voordeel van deze benadering is dat u niet hoeft op te geven in het manifest welke bestanden u in het pakket wilt opnemen, zoals verderop in deze sectie wordt uitgelegd. In plaats daarvan kunt u uw buildproces de exacte mapstructuur laten produceren die in het pakket wordt geplaatst. U kunt ook eenvoudig andere bestanden opnemen die mogelijk geen deel uitmaken van een project, anders:
- Inhoud en broncode die in het doelproject moeten worden geïnjecteerd
- PowerShell-scripten
- Transformaties naar bestaande configuratie- en broncodebestanden in een project
De mappen zijn afgestemd op de volgende conventies:
| Map | Inhoud | Actie bij installatie van pakket |
|---|---|---|
| (root) | Het pakketmanifest, bovenniveau mappen en eventueel een read-me Markdown-bestand en een pictogramafbeelding. | Deze map wordt gebruikt als uitgangspunt voor gestandaardiseerde submappen, zoals lib en build. |
| lib/<tfm> | Assemblybestanden (.dll), documentatie (.xml) en symboolbestanden (.pdb) voor de opgegeven target framework moniker (TFM) | Assembly's worden toegevoegd als verwijzingen voor compileertijd en runtime. De .xml- en PDB-bestanden worden gekopieerd naar projectmappen. Zie Support multiple .NET versions voor meer informatie over het maken van doelspecifieke frameworksubmappen. |
| ref/<tfm> | Assembly-bestanden (.dll) en symboolbestanden (.pdb) voor de specifieke TFM | Assemblies worden alleen als referenties toegevoegd voor de compilatietijd. Er wordt niets gekopieerd naar de map bin. |
| uitvoeringstijden | Architectuurspecifieke assemblybestanden (.dll), symbool (.pdb) en systeemeigen bronbestanden (.pri) | Assembly's worden alleen toegevoegd als verwijzingen voor runtime. Andere bestanden worden gekopieerd naar projectmappen. Er moet altijd een specifieke (TFM) AnyCPU assembly zijn onder de map /ref/<tfm> om de overeenkomstige compilatie-tijdassembly te bieden. Zie Support multiple .NET versions. |
| inhoud | Willekeurige bestanden | De inhoud wordt gekopieerd naar de hoofdmap van het project. U kunt de inhoudsmap beschouwen als de hoofdmap van de doeltoepassing die uiteindelijk het pakket verbruikt. Als u wilt dat het pakket een afbeelding toevoegt in de map /images van de toepassing, plaatst u deze in de map inhoud/afbeeldingen van het pakket. |
| Bouwen | (3.x+) Microsoft Build Engine (MSBuild) .targets en .props bestanden | Deze bestanden worden automatisch ingevoegd in het project. |
| buildMultiTargeting | (4,0+) MSBuild .targets en .props-bestanden voor cross-framework targeting | Deze bestanden worden automatisch ingevoegd in het project. |
| buildTransitive | (5,0+) MSBuild .targets en .props-bestanden die naar elk project dat het gebruikt doorstromen | Deze bestanden worden automatisch ingevoegd in het project. Zie de pagina met functies. |
| Gereedschappen | PowerShell-scripts en -programma's die toegankelijk zijn vanuit de Pakketbeheer Console | De map tools wordt alleen toegevoegd aan de omgevingsvariabele PATH voor de Pakketbeheer Console. Het wordt niet toegevoegd aan de PATH waarde die MSBuild gebruikt bij het bouwen van het project. |
Omdat uw mapstructuur assembly's voor veel doelframeworks kan bevatten, is deze methode nodig wanneer u pakketten maakt die ondersteuning bieden voor meerdere frameworks.
Wanneer u de gewenste mapstructuur hebt, voert u de volgende opdracht in die map uit om het .nuspec-bestand te maken:
nuget spec
Het gegenereerde .nuspec-bestand bevat geen expliciete verwijzingen naar bestanden in de mapstructuur. NuGet bevat automatisch alle bestanden wanneer het pakket wordt gemaakt. U moet de tijdelijke aanduidingen voor waarden in andere delen van het manifest echter nog bewerken.
Vanuit een assembly-DLL
In het basisscenario van het maken van een pakket op basis van een assembly kunt u een .nuspec-bestand genereren op basis van de metagegevens in de assembly met behulp van de volgende opdracht:
nuget spec <assembly-name>.dll
Met dit formulier worden enkele plaatsaanduidingen in het manifest vervangen door specifieke waarden uit de assembly. De eigenschap is bijvoorbeeld ingesteld op <id> de assemblynaam, en <version> is ingesteld op de assemblyversie. Andere eigenschappen in het manifest hebben echter geen overeenkomende waarden in de assembly. Deze eigenschappen bevatten nog steeds tijdelijke aanduidingen nadat u de opdracht hebt uitgevoerd.
Vanuit een Visual Studio project
Het maken van een .nuspec-bestand op basis van een .csproj - of VBPROJ-bestand is handig, omdat andere pakketten die in het project zijn geïnstalleerd, automatisch worden verwezen als afhankelijkheden. Als u een manifest wilt maken op basis van een projectbestand, gebruikt u de volgende opdracht in de map die het projectbestand bevat:
# Use in a folder that contains a project file, such as <project-name>.csproj or <project-name>.vbproj.
nuget spec
Het resulterende <project-name.nuspec-bestand> bevat tokens die tijdens de verpakking worden vervangen door waarden uit het project, inclusief verwijzingen naar andere pakketten die al zijn geïnstalleerd.
Als u pakketafhankelijkheden hebt die moeten worden opgenomen in de .nuspec, gebruikt u nuget packin plaats daarvan . Haal vervolgens het .nuspec-bestand op vanuit het gegenereerde .nupkg-bestand . Gebruik bijvoorbeeld de volgende opdracht:
# Use in a folder that contains a project file, such as <project-name>.csproj or <project-name>.vbproj.
nuget pack myproject.csproj
Een token wordt begrensd door $ symbolen aan weerszijden van het projectkenmerk. De waarde in een manifest die op deze manier wordt gegenereerd, <id> ziet er bijvoorbeeld meestal uit als de volgende regel:
<id>$id$</id>
Dit token wordt vervangen door de AssemblyName waarde uit het projectbestand tijdens het inpakken. Zie Replacement tokens voor de exacte toewijzing van projectwaarden aan .nuspec bestandstokens.
Met tokens hoeft u geen cruciale waarden bij te werken, zoals het versienummer in het .nuspec-bestand terwijl u het project bijwerkt. Maar u kunt de tokens ook vervangen door letterlijke waarden.
Er zijn verschillende extra verpakkingsopties beschikbaar wanneer u vanuit een Visual Studio project werkt, zoals beschreven in Run nuget pack om het .nupkg-bestand te genereren verderop in dit artikel.
Pakketten op oplossingsniveau
Alleen NuGet 2.x. Niet beschikbaar in NuGet 3.0+.
NuGet 2.x ondersteunt het concept van een pakket op oplossingsniveau dat hulpprogramma's of extra opdrachten installeert voor de Pakketbeheer Console (de inhoud van de map tools), maar voegt geen verwijzingen, inhoud of aanpassingen toe aan projecten in de oplossing. Dergelijke pakketten bevatten geen bestanden in hun directe lib-, inhouds- of buildmappen en geen van hun afhankelijkheden hebben bestanden in hun respectieve lib-, inhouds- of buildmappen .
NuGet houdt geïnstalleerde pakketten op oplossingsniveau bij in een packages.config-bestand in de map .nuget , in plaats van het packages.config-bestand van het project.
Vanuit een nieuw bestand met standaardwaarden
Met de volgende opdracht maakt u een standaardmanifest met tijdelijke aanduidingen, waarmee u kunt beginnen met de juiste bestandsstructuur:
nuget spec [<package-name>]
Als u weglaat <package-name>, heet het resulterende bestand Package.nuspec. Als u een naam zoals Contoso.Utility.UsefulStuff opgeeft, heeft het bestand de naam Contoso.Utility.UsefulStuff.nuspec.
Het resulterende .nuspec-bestand bevat tijdelijke aanduidingen voor waarden zoals projectUrl. Voordat u het bestand gebruikt om het uiteindelijke .nupkg-bestand te maken, vervangt u de tijdelijke aanduidingen door de juiste waarden.
Kies een unieke pakket-id en stel het versienummer in
De pakket-id (<id> element) en het versienummer (<version> element) zijn de twee belangrijkste waarden in het manifest, omdat ze de exacte code in het pakket uniek identificeren.
Aanbevolen procedures voor de pakket-id
-
Uniekheid: de id moet uniek zijn in de galerie die als host fungeert voor het pakket, zoals nuget.org. Voordat u een id kiest, zoekt u in de betreffende galerie om te controleren of de naam al in gebruik is. Om conflicten te voorkomen, is het een goed patroon om uw bedrijfsnaam te gebruiken als het eerste deel van de id, zoals
Contoso. -
Naamruimteachtige namen: volg een patroon dat vergelijkbaar is met naamruimten in .NET, waarbij punttekens worden gebruikt in plaats van afbreekstreepjes. Gebruik bijvoorbeeld
Contoso.Utility.UsefulStuffin plaatsContoso-Utility-UsefulStuffvan ofContoso_Utility_UsefulStuff. Consumenten vinden het ook handig wanneer de pakket-id overeenkomt met de naamruimten die in de code worden gebruikt. -
Voorbeeldpakketten: Als u een pakket met voorbeeldcode produceert dat laat zien hoe u een ander pakket gebruikt, voegt
.Sampleu als achtervoegsel toe aan de id, zoals inContoso.Utility.UsefulStuff.Sample. Een voorbeeldpakket van dit type heeft een afhankelijkheid van het pakket dat het demonstreert hoe te gebruiken. Wanneer u een voorbeeldpakket maakt, gebruikt u de op conventie gebaseerde werkmapmethode die eerder is beschreven. Rangschik in de inhoudsmap de voorbeeldcode in een map met de naam \Samples\<identifier>, zoals in \Samples\Contoso.Utility.UsefulStuff.Sample.
Aanbevolen procedures voor de pakketversie
- Stel in het algemeen de versie van het pakket in zodat deze overeenkomt met de bibliotheek. Deze richtlijnen worden aanbevolen, maar niet strikt vereist. Deze procedure is eenvoudig wanneer u een pakket beperkt tot één assembly, zoals eerder beschreven in Bepalen welke assembly's moeten worden verpakt. Over het algemeen moet u er rekening mee houden dat NuGet zelf te maken heeft met pakketversies bij het oplossen van afhankelijkheden, niet met assemblyversies.
- Wanneer u een niet-standaardversieschema gebruikt, moet u rekening houden met de NuGet-versiebeheerregels, zoals wordt uitgelegd in pakketversiebeheer.
Zie de volgende reeks korte blogberichten voor andere informatiebronnen die nuttig zijn voor het begrijpen van versiebeheer:
- Deel 1: Het aanpakken van DLL-ellende
- Deel 2: Het kernalgoritmen
- Deel 3: Eenwording via bindingsomleidingen
Een read-me-bestand en andere bestanden toevoegen
Als u rechtstreeks bestanden wilt opgeven die in het pakket moeten worden opgenomen, gebruikt u het <files> knooppunt in het .nuspec-bestand, dat de tag <metadata>:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<!-- ... -->
</metadata>
<files>
<!-- Add files from an arbitrary folder that's not necessarily in the project. -->
<file src="..\..\SomeRoot\**\*.*" target="" />
</files>
</package>
Aanbeveling
Wanneer u de benadering op basis van conventiewerkmappen gebruikt, kunt u het readme.md-bestand in de hoofdmap van het pakket en andere inhoud in de inhoudsmap plaatsen. Er zijn geen <file> elementen nodig in het manifest.
Als u een read-me-bestand in het pakket wilt opnemen, kunt u het readme-metagegevenselement gebruiken om het doelpad naar het read-me-bestand op te geven. Gebruik ook een file metagegevenselement om het bronpad en de doelmap van het bestand Read-me op te geven. Zie readme voor meer informatie.
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<!-- ... -->
<readme>docs\readme.md</readme>
<!-- ... -->
</metadata>
<files>
<!-- Add a read-me file. -->
<file src="..\readme.md" target="docs\" />
</files>
</package>
Visual Studio geeft de inhoud van het readme-bestand weer in de gebruikersinterface van de Pakketbeheer. In de volgende schermopname ziet u bijvoorbeeld het bestand read-me voor het HtmlAgilityPack pakket:
Opmerking
Als u een leeg <files> knooppunt in het .nuspec-bestand opneemt, bevat NuGet de inhoud van de lib-map in het pakket, maar geen andere inhoud.
MSBuild props en doelen opnemen in een pakket
In sommige gevallen wilt u misschien aangepaste builddoelen of eigenschappen toevoegen aan projecten die uw pakket gebruiken, zoals het uitvoeren van een aangepast hulpprogramma of proces tijdens de build. Zie MSBuild .props en .targets in een pakket voor meer informatie over aangepaste builddoelen en eigenschappen.
Maak <package-id.targets> of <package-id.props> bestanden, zoals Contoso.Utility.UsefulStuff.targets, in de build-mappen van het project.
Raadpleeg vervolgens in het .nuspec-bestand deze bestanden in het <files> knooppunt:
<?xml version="1.0"?>
<package >
<metadata minClientVersion="2.5">
<!-- ... -->
</metadata>
<files>
<!-- In the package build folder, include everything that's in the local build folder. -->
<file src="build\**" target="build" />
<!-- Other files -->
<!-- ... -->
</files>
</package>
Wanneer pakketten worden toegevoegd aan een project, bevat NuGet automatisch deze eigenschappen en doelen.
Nuget-pack uitvoeren om het .nupkg-bestand te genereren
Wanneer u een assembly of de op conventie gebaseerde werkmap gebruikt, creëert u een pakket door nuget pack uit te voeren met uw .nuspec-bestand. Vervang in de volgende opdracht <project-name> door de naam van uw project:
nuget pack <project-name>.nuspec
Wanneer u een Visual Studio project gebruikt, voert u nuget pack uit met uw projectbestand. Met deze opdracht wordt het .nuspec-bestand van het project automatisch geladen en worden alle tokens hierin vervangen door de bijbehorende waarden in het projectbestand:
nuget pack <project-name>.csproj
Opmerking
Voor tokenvervanging moet u het projectbestand rechtstreeks gebruiken, omdat het project de bron is van de tokenwaarden. Het vervangen van tokens lukt niet als u een nuget pack gebruikt.
In alle gevallen nuget pack worden mappen uitgesloten die beginnen met een punt, zoals .git of .hg.
NuGet geeft aan of er fouten zijn in het .nuspec-bestand dat moet worden gecorrigeerd, zoals tijdelijke aanduidingenwaarden in het manifest die moeten worden bijgewerkt.
Nadat nuget pack het is gelukt, hebt u een .nupkg-bestand dat u kunt publiceren naar een geschikte galerie, zoals beschreven in NuGet-pakketten publiceren.
Aanbeveling
Een handige manier om een pakket te onderzoeken nadat u het hebt gemaakt, is door het te openen in het hulpprogramma Package Explorer . Met dit hulpprogramma krijgt u een grafische weergave van de inhoud van het pakket en het bijbehorende manifest. U kunt ook de naam van het resulterende .nupkg-bestand wijzigen in een .zip-bestand en de inhoud ervan rechtstreeks verkennen.
Aanvullende opties
U kunt verschillende opdrachtregelopties nuget pack gebruiken om bestanden uit te sluiten, het versienummer in het manifest te overschrijven en de uitvoermap te wijzigen, onder andere functies. Zie de opdracht Pack (NuGet CLI) voor een volledige lijst.
De volgende opties zijn enkele die gebruikelijk zijn voor Visual Studio projecten:
Projecten waarnaar wordt verwezen: als het project verwijst naar andere projecten, kunt u de projecten waarnaar wordt verwezen toevoegen als onderdeel van het pakket of als afhankelijkheden, met behulp van de
-IncludeReferencedProjectsoptie:nuget pack MyProject.csproj -IncludeReferencedProjectsDit opnameproces is recursief. Als MyProject.csproj bijvoorbeeld verwijst naar projecten B en C, en deze projecten verwijzen op hun beurt naar D, E en F, dan worden de bestanden van B, C, D, E en F opgenomen in het pakket.
Als een project waarnaar wordt verwezen, een .nuspec-bestand bevat, voegt NuGet dat project toe als een afhankelijkheid. U moet dat project afzonderlijk verpakken en publiceren.
Buildconfiguratie: NuGet maakt standaard gebruik van de standaard buildconfiguratie die is ingesteld in het projectbestand, meestal
Debug. Als u bestanden uit een andere buildconfiguratie wilt inpakken, zoalsRelease, gebruikt u de-propertiesoptie met de configuratie:nuget pack MyProject.csproj -properties Configuration=ReleaseSymbolen: Als u symbolen wilt opnemen waarmee consumenten uw pakketcode in het foutopsporingsprogramma kunnen doorlopen, gebruikt u de
-Symbolsen-SymbolPackageFormatopties. Geef voor de-SymbolPackageFormatoptie een formaat op vansnupkg:nuget pack MyProject.csproj -symbols -SymbolPackageFormat snupkg
Installatie van het testpakket
Voordat u een pakket publiceert, wilt u meestal het proces voor het installeren van het pakket in een project testen. Een test helpt ervoor te zorgen dat alle benodigde bestanden op de juiste plaats in het project terechtkomen.
U kunt installaties handmatig testen in Visual Studio of op de opdrachtregel met behulp van de standaardinstallatiestappen voor package.
Voor geautomatiseerde tests kunt u het volgende basisproces gebruiken:
- Kopieer het .nupkg-bestand naar een lokale map.
- Voeg de map toe aan uw pakketbronnen met behulp van de
nuget sources add -name <name> -source <path>opdracht. Zie de opdracht Bronnen (NuGet CLI) voor meer informatie. U moet deze lokale bron slechts eenmaal instellen op een bepaalde computer. - Installeer het pakket van die bron met behulp van
nuget install <package-ID> -source <name>. In deze opdracht<name>moet deze overeenkomen met de naam van de bron die u in denuget sourcesopdracht gebruikt. Als u de bron opgeeft, moet NuGet het pakket alleen van die bron installeren. - Controleer uw bestandssysteem om te controleren of bestanden correct zijn geïnstalleerd.
Verwante inhoud
Nadat u een pakket hebt gemaakt, een .nupkg-bestand , kunt u het publiceren naar de galerie van uw keuze. Zie NuGet-pakketten publiceren voor meer informatie.
U kunt ook de mogelijkheden van uw pakket uitbreiden of andere scenario's ondersteunen. Zie de volgende artikelen voor meer informatie:
- Pakketversiebeheer
- Ondersteuning voor meerdere .NET-versies
- Broncode- en configuratiebestanden transformeren
- Gelokaliseerde NuGet-pakketten maken
- Pre-releasepakketten bouwen
- Een NuGet-pakkettype instellen
- NuGet-pakketten maken die COM-interoperabiliteitsassemblies bevatten
Raadpleeg de volgende artikelen om rekening mee te houden met andere pakkettypen: