dotnet pack
Dit artikel is van toepassing op: ✔️ .NET Core 3.1 SDK en latere versies
dotnet pack
- Verpakt de code in een NuGet-pakket.
dotnet pack [<PROJECT>|<SOLUTION>] [--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [--force]
[--include-source] [--include-symbols] [--interactive]
[--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Met de dotnet pack
opdracht wordt het project gebouwd en NuGet-pakketten gemaakt. Het resultaat van deze opdracht is een NuGet-pakket (een .nupkg-bestand ).
Als u een pakket wilt genereren dat de foutopsporingssymbolen bevat, zijn er twee opties beschikbaar:
--include-symbols
- het symboolpakket wordt gemaakt.--include-source
- hiermee wordt het symboolpakket gemaakt met eensrc
map in die de bronbestanden bevat.
NuGet-afhankelijkheden van het verpakte project worden toegevoegd aan het .nuspec-bestand , zodat ze correct worden opgelost wanneer het pakket is geïnstalleerd. Als het verpakte project verwijzingen naar andere projecten bevat, worden de andere projecten niet opgenomen in het pakket. Op dit moment moet u per project een pakket hebben als u project-naar-project-afhankelijkheden hebt.
dotnet pack
Standaard wordt het project eerst gebouwd. Als u dit gedrag wilt voorkomen, geeft u de --no-build
optie door. Deze optie is vaak handig in CI-buildscenario's (Continuous Integration), waarbij u weet dat de code eerder is gebouwd.
Notitie
In sommige gevallen kan de impliciete build niet worden uitgevoerd. Dit kan gebeuren wanneer GeneratePackageOnBuild
deze is ingesteld, om een cyclische afhankelijkheid tussen build- en packdoelen te voorkomen. De build kan ook mislukken als er een vergrendeld bestand of ander probleem is.
U kunt MSBuild-eigenschappen aan de dotnet pack
opdracht voor het verpakkingsproces opgeven. Zie de doeleigenschappen van het NuGet-pakket en de MSBuild-opdrachtregelreferentie voor meer informatie. In de sectie Voorbeelden ziet u hoe u de MSBuild-switch -p
gebruikt voor een aantal verschillende scenario's.
Notitie
Webprojecten kunnen niet worden verpakt.
U hoeft niet uit te voeren dotnet restore
omdat deze impliciet wordt uitgevoerd door alle opdrachten waarvoor een herstelbewerking moet worden uitgevoerd, zoals dotnet new
, dotnet build
, , dotnet run
, dotnet test
, , en dotnet publish
.dotnet pack
Als u impliciete herstel wilt uitschakelen, gebruikt u de --no-restore
optie.
De dotnet restore
opdracht is nog steeds nuttig in bepaalde scenario's waarbij het expliciet herstellen zinvol is, zoals builds voor continue integratie in Azure DevOps Services of in buildsystemen die expliciet moeten worden beheerd wanneer de herstelbewerking plaatsvindt.
Zie de dotnet restore
documentatie voor informatie over het beheren van NuGet-feeds.
Deze opdracht ondersteunt de dotnet restore
opties die worden doorgegeven in het lange formulier (bijvoorbeeld --source
). Korte formulieropties, zoals -s
, worden niet ondersteund.
Wanneer u deze opdracht uitvoert, wordt er een asynchrone achtergronddownload van reclamemanifesten voor workloads gestart. Als het downloaden nog steeds wordt uitgevoerd wanneer deze opdracht is voltooid, wordt het downloaden gestopt. Zie Reclamemanifesten voor meer informatie.
PROJECT | SOLUTION
Het project of de oplossing die moet worden verpakt. Het is een pad naar een csproj-, vbproj- of fsproj-bestand, of naar een oplossingsbestand of map. Als dit niet is opgegeven, zoekt de opdracht in de huidige map naar een project- of oplossingsbestand.
--artifacts-path <ARTIFACTS_DIR>
Alle builduitvoerbestanden van de uitgevoerde opdracht worden weergegeven in submappen onder het opgegeven pad, gescheiden door project. Zie De indeling Artefacten-uitvoer voor meer informatie. Beschikbaar sinds .NET 8 SDK.
-c|--configuration <CONFIGURATION>
Definieert de buildconfiguratie. Als u ontwikkelt met de .NET 8 SDK of een latere versie, gebruikt de opdracht standaard de
Release
configuratie voor projecten waarvan TargetFramework is ingesteldnet8.0
op of een latere versie. De standaard buildconfiguratie isDebug
voor eerdere versies van de SDK en voor eerdere doelframeworks. U kunt de standaardinstelling in projectinstellingen overschrijven of door deze optie te gebruiken. Zie 'dotnet publish' maakt gebruik van releaseconfiguratie en dotnet pack maakt gebruik van releaseconfiguratie.
--force
Hiermee worden alle afhankelijkheden gedwongen om te worden opgelost, zelfs als de laatste herstelbewerking is geslaagd. Het opgeven van deze vlag is hetzelfde als het verwijderen van het project.assets.json bestand.
-?|-h|--help
Hiermee wordt een beschrijving afgedrukt van het gebruik van de opdracht.
--include-source
Bevat de foutopsporingssymbolen NuGet-pakketten naast de reguliere NuGet-pakketten in de uitvoermap. De bronbestanden zijn opgenomen in de
src
map in het symbolenpakket.--include-symbols
Bevat de foutopsporingssymbolen NuGet-pakketten naast de reguliere NuGet-pakketten in de uitvoermap.
--interactive
Hiermee kan de opdracht stoppen en wachten op invoer of actie van de gebruiker. Bijvoorbeeld om de verificatie te voltooien. Beschikbaar sinds .NET Core 3.0 SDK.
--no-build
Het project wordt niet gebouwd voordat het wordt verpakt. De vlag wordt ook impliciet ingesteld
--no-restore
.--no-dependencies
Negeert project-naar-projectverwijzingen en herstelt alleen het hoofdproject.
--no-restore
Voert geen impliciete herstelbewerking uit bij het uitvoeren van de opdracht.
--nologo
De opstartbanner of het copyrightbericht wordt niet weergegeven.
-o|--output <OUTPUT_DIRECTORY>
Hiermee plaatst u de ingebouwde pakketten in de opgegeven map.
.NET 7.0.200 SDK
Als u in de SDK 7.0.200 de optie opgeeft bij het
--output
uitvoeren van deze opdracht op een oplossing, wordt door de CLI een fout verzonden. Dit is een regressie en is opgelost in 7.0.201 en latere versies van de .NET SDK.
--runtime <RUNTIME_IDENTIFIER>
Hiermee geeft u de doelruntime op waarvoor pakketten moeten worden hersteld. Zie de RID-catalogus voor een lijst met runtime-id's (RID's).
-s|--serviceable
Hiermee stelt u de servicevlag in het pakket in. Zie .NET Blog: .NET Framework 4.5.1 Ondersteunt Microsoft-beveiligingsupdates voor .NET NuGet-bibliotheken voor meer informatie.
--tl:[auto|on|off]
Hiermee geeft u op of de terminallogger moet worden gebruikt voor de build-uitvoer. De standaardwaarde is
auto
, waarmee eerst de omgeving wordt geverifieerd voordat u terminallogboekregistratie inschakelt. De omgevingscontrole controleert of de terminal in staat is moderne uitvoerfuncties te gebruiken en geen omgeleide standaarduitvoer gebruikt voordat de nieuwe logger wordt ingeschakeld.on
slaat de omgevingscontrole over en schakelt terminallogboekregistratie in.off
slaat de omgevingscontrole over en maakt gebruik van de standaardconsolelogger.De terminallogger toont u de herstelfase, gevolgd door de buildfase. Tijdens elke fase worden de huidige bouwprojecten onderaan de terminal weergegeven. Elk project dat wordt gebouwd, levert zowel het MSBuild-doel dat momenteel wordt gebouwd als de hoeveelheid tijd die aan dat doel is besteed. U kunt deze informatie doorzoeken voor meer informatie over de build. Wanneer een project klaar is met bouwen, wordt één sectie 'build completed' geschreven die het volgende vastlegt:
- De naam van het gebouwde project.
- Het doelframework (indien multi-targeted).
- De status van die build.
- De primaire uitvoer van die build (die is hyperlinked).
- Diagnostische gegevens die voor dat project worden gegenereerd.
Deze optie is beschikbaar vanaf .NET 8.
-v|--verbosity <LEVEL>
Hiermee stelt u het uitgebreidheidsniveau van de opdracht in. Toegestane waarden zijn
q[uiet]
, , ,n[ormal]
endiag[nostic]
d[etailed]
m[inimal]
. Zie LoggerVerbosity voor meer informatie.
--version-suffix <VERSION_SUFFIX>
Definieert de waarde voor de
VersionSuffix
eigenschap MSBuild. Het effect van deze eigenschap op de pakketversie is afhankelijk van de waarden van deVersion
enVersionPrefix
eigenschappen, zoals wordt weergegeven in de volgende tabel:Eigenschappen met waarden Versie van het pakket Geen 1.0.0
Version
$(Version)
VersionPrefix
Alleen$(VersionPrefix)
VersionSuffix
Alleen1.0.0-$(VersionSuffix)
VersionPrefix
enVersionSuffix
$(VersionPrefix)-$(VersionSuffix)
Als u het projectbestand wilt gebruiken
--version-suffix
, geeft uVersionPrefix
dit op en nietVersion
in het projectbestand. Als dat bijvoorbeeldVersionPrefix
het is0.1.2
en u doorgeeftdotnet pack
--version-suffix rc.1
, is0.1.2-rc.1
de pakketversie.Als
Version
er een waarde is en u doorgeeft--version-suffix
dotnet pack
, wordt de opgegeven--version-suffix
waarde genegeerd.
Pak het project in de huidige map in:
dotnet pack
Pak het
app1
project in:dotnet pack ~/projects/app1/project.csproj
Pak het project in de huidige map in en plaats de resulterende pakketten in de
nupkgs
map:dotnet pack --output nupkgs
Pak het project in de huidige map in de
nupkgs
map en sla de buildstap over:dotnet pack --no-build --output nupkgs
Als het versieachtervoegsel van het project is geconfigureerd zoals
<VersionSuffix>$(VersionSuffix)</VersionSuffix>
in het .csproj-bestand , moet u het huidige project inpakken en de resulterende pakketversie bijwerken met het opgegeven achtervoegsel:dotnet pack --version-suffix "ci-1234"
Stel de pakketversie in op
2.1.0
met dePackageVersion
eigenschap MSBuild:dotnet pack -p:PackageVersion=2.1.0
Pak het project in voor een specifiek doelframework:
dotnet pack -p:TargetFrameworks=net45
Pak het project in en gebruik een specifieke runtime (Windows) voor de herstelbewerking:
dotnet pack --runtime win-x64
Pak het project in met behulp van een .nuspec-bestand :
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
Zie de volgende bronnen voor meer informatie over het gebruik
NuspecFile
,NuspecBasePath
enNuspecProperties
:
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven: