Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo si applica a: ✔️ .NET 6 SDK e versioni successive
Nome
dotnet pack - Inserisce il codice in un pacchetto NuGet.
Synopsis
dotnet pack [<PROJECT>|<SOLUTION>|<NUSPEC>|<FILE>]
[--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
[--disable-build-servers] [--force] [--include-source] [--include-symbols]
[--interactive] [--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [-p|--property:<PROPERTYNAME>=<VALUE>]
[--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version <VERSION>] [--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Description
Il dotnet pack comando compila il progetto e crea pacchetti NuGet. Il risultato di questo comando è un pacchetto NuGet, ovvero un file con estensione nupkg .
A partire da .NET 10, è anche possibile passare un file con estensione nuspec o un'app basata su file (.cs file) direttamente come argomento. Quando si passa un file con estensione nuspec , dotnet pack crea il pacchetto dal file con estensione nuspec senza richiedere un file di progetto e senza eseguire MSBuild. Quando passi un'app basata su file, dotnet pack la comprime senza un file di progetto.
Se si vuole generare un pacchetto contenente i simboli di debug, sono disponibili due opzioni:
-
--include-symbols: crea il pacchetto dei simboli. -
--include-source: crea il pacchetto dei simboli con unasrccartella all'interno dei file di origine.
Le dipendenze NuGet del progetto compresso vengono aggiunte al file con estensione nuspec , quindi vengono risolte correttamente quando il pacchetto viene installato. Se il progetto compresso contiene riferimenti ad altri progetti, gli altri progetti non vengono inclusi nel pacchetto. Attualmente, è necessario avere un pacchetto per ogni progetto se sono presenti dipendenze da progetto a progetto.
Per impostazione predefinita, dotnet pack compila prima il progetto. Se si desidera evitare questo comportamento, passare l'opzione --no-build . Questa opzione è spesso utile negli scenari di compilazione integrazione continua (CI) in cui si sa che il codice è stato compilato in precedenza.
Annotazioni
In alcuni casi, non è possibile eseguire la compilazione implicita. Ciò può verificarsi quando GeneratePackageOnBuild è impostato, per evitare una dipendenza ciclico tra destinazioni di compilazione e pack. La compilazione può anche non riuscire se si verifica un file bloccato o un altro problema.
Annotazioni
I progetti Web non sono comprimibili.
Ripristino implicito
Non è necessario eseguire dotnet restore perché viene eseguito in modo implicito da tutti i comandi che richiedono un ripristino, ad esempio dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish e dotnet pack. Per disabilitare il ripristino implicito, usare l'opzione --no-restore.
Il comando dotnet restore è ancora utile in alcuni scenari in cui ha senso eseguire un ripristino esplicito, ad esempio le compilazioni di integrazione continua in Azure DevOps Services o in sistemi di compilazione che richiedono il controllo esplicito quando viene eseguito il ripristino.
Per informazioni su come gestire i feed NuGet, vedere la dotnet restore documentazione.
Questo comando supporta le opzioni dotnet restore passate nel formato continuo (ad esempio, --source). Le opzioni in formato breve, come -s, non sono supportate.
Download del manifesto del carico di lavoro
Quando si esegue questo comando, avvia un download in background asincrono dei manifesti pubblicitari per i carichi di lavoro. Se il download è ancora in esecuzione al termine di questo comando, il download viene arrestato. Per altre informazioni, vedere Manifesti pubblicitari.
Arguments
PROJECT | SOLUTION | NUSPEC | FILE
Progetto, soluzione, file con estensione nuspec o app basata su file da comprimere.
PROJECTè il percorso di un.csprojfile ,.vbprojo.fsprojo di una directory contenente un file di progetto.SOLUTIONè il percorso di un file di soluzione (.slno estensione) o.slnxdi una directory contenente un file di soluzione.NUSPECè il percorso di un.nuspecfile. Disponibile a partire da .NET 10.FILEè il percorso di un'app basata su file (un file C# senza un file di progetto corrispondente). Disponibile a partire da .NET 10. Per altre informazioni, vedere Creare app C# basate su file.Se non specificato, il comando cerca nella directory corrente un file di progetto o di soluzione.
Options
-
--artifacts-path <ARTIFACTS_DIR>Tutti i file di output di compilazione del comando eseguito verranno inseriti nelle sottocartelle nel percorso specificato, separati dal progetto. Per altre informazioni, vedere layout di output artefatti. Disponibile a partire da .NET 8 SDK.
-
-c|--configuration <CONFIGURATION>Definisce la configurazione di compilazione. Se si sviluppa con .NET 8 SDK o versione successiva, il comando usa la configurazione
Releaseper impostazione predefinita per i progetti i cui TargetFramework è impostato sunet8.0o versione successiva. La configurazione di compilazione predefinita èDebugper le versioni precedenti dell'SDK e per i framework di destinazione precedenti. È possibile eseguire l'override del valore predefinito nelle impostazioni del progetto o usando questa opzione. Per altre informazioni, vedere 'dotnet publish' usa la configurazione della versione e 'dotnet pack' usa la configurazione della versione. -
--disable-build-serversForza il comando a ignorare tutti i server di compilazione permanenti. Questa opzione consente di disabilitare in modo coerente l'uso della memorizzazione nella cache di compilazione, che forza una compilazione da zero. Una compilazione che non si basa sulle cache è utile quando le cache potrebbero essere danneggiate o errate per qualche motivo. Disponibile a partire da .NET 7 SDK.
--forceForza la risoluzione di tutte le dipendenze, anche se l'ultimo ripristino ha avuto esito positivo. Specificare questo flag equivale all'eliminazione del file di project.assets.json.
--include-sourceInclude i simboli di debug dei pacchetti NuGet oltre ai normali pacchetti NuGet nella directory di output. I file di origine sono inclusi nella
srccartella all'interno del pacchetto di simboli.--include-symbolsInclude i simboli di debug dei pacchetti NuGet oltre ai normali pacchetti NuGet nella directory di output.
-
--interactiveConsente al comando di arrestare e attendere l'input o l'azione dell'utente. Ad esempio, per completare l'autenticazione.
--no-buildNon compila il progetto prima della compressione. Imposta anche in modo implicito il flag
--no-restore.--no-dependenciesIgnora i riferimenti da progetto a progetto e ripristina solo il progetto radice.
--no-restoreNon esegue un ripristino implicito quando si esegue il comando .
--nologoNon visualizza il banner di avvio o il messaggio di copyright.
-o|--output <OUTPUT_DIRECTORY>Inserisce i pacchetti predefiniti nella directory specificata.
.NET 7.0.200 SDK
Nell'SDK 7.0.200, se si specifica l'opzione
--outputquando si esegue questo comando in una soluzione, l'interfaccia della riga di comando genererà un errore. Si tratta di una regressione che è stata risolta nella versione 7.0.201 e versioni successive di .NET SDK.
-p|--property:<PROPERTYNAME>=<VALUE>Imposta una o più proprietà di MSBuild. Durante la compressione diretta di un file con estensione nuspec , le proprietà vengono usate per la sostituzione dei token nel file con estensione nuspec anziché come proprietà di MSBuild. Specificare più proprietà delimitate da punti e virgola o ripetendo l'opzione:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>Per altre informazioni, vedere Proprietà di destinazione del pacchetto NuGet e Informazioni di riferimento sulla riga di comando di MSBuild.
--runtime <RUNTIME_IDENTIFIER>Specifica il runtime di destinazione per cui ripristinare i pacchetti. Per un elenco degli identificatori di runtime (RID), vedere il catalogo RID .
-s|--serviceableImposta il flag serviceable nel pacchetto. Per altre informazioni, vedere .NET Blog: .NET Framework 4.5.1 Supporta gli aggiornamenti della sicurezza Microsoft per le librerie NuGet .NET.
-
--tl:[auto|on|off]Specifica se il Logger terminale deve essere usato per l'output di compilazione. Il valore predefinito è
auto, che prima di abilitare la registrazione del terminale verifica l'ambiente. Il controllo dell'ambiente verifica che il terminale sia in grado di usare le funzionalità di output moderne e non usa un output standard reindirizzato prima di abilitare il nuovo logger.onignora il controllo dell'ambiente e abilita la registrazione del terminale.offignora il controllo dell'ambiente e usa il logger di console predefinito.Terminale Logger mostra la fase di ripristino seguita dalla fase di compilazione. Durante ogni fase, i progetti attualmente in fase di compilazione vengono visualizzati nella parte inferiore del terminale. Ogni progetto che compila restituisce sia la destinazione MSBuild attualmente in fase di compilazione che la quantità di tempo impiegato per tale destinazione. È possibile cercare queste informazioni per altre informazioni sulla compilazione. Al termine della compilazione di un progetto, viene scritta una singola sezione "compilazione completata" che acquisisce:
- Nome del progetto compilato.
- Framework di destinazione (se multi-destinazione).
- Stato della compilazione.
- Output primario di tale compilazione (con collegamento ipertestuale).
- Qualsiasi diagnostica generata per il progetto.
Questa opzione è disponibile a partire da .NET 8.
-
-v|--verbosity <LEVEL>Imposta il livello di dettaglio del comando. I valori consentiti sono
q[uiet],m[inimal],n[ormal],d[etailed]ediag[nostic]. Per altre informazioni, vedere LoggerVerbosity. --version <VERSION>Versione del pacchetto da creare. Durante la compressione di un file con estensione nuspec , esegue l'override del numero di versione nel file con estensione nuspec .
Annotazioni
Disponibile a partire da .NET 10.
--version-suffix <VERSION_SUFFIX>Definisce il valore per la
VersionSuffixproprietà MSBuild. L'effetto di questa proprietà sulla versione del pacchetto dipende dai valori delleVersionproprietà eVersionPrefix, come illustrato nella tabella seguente:Proprietà con valori Versione del pacchetto None 1.0.0Version$(Version)Solo VersionPrefix$(VersionPrefix)Solo VersionSuffix1.0.0-$(VersionSuffix)VersionPrefixeVersionSuffix$(VersionPrefix)-$(VersionSuffix)Se si vuole usare
--version-suffix, specificareVersionPrefixe nonVersionnel file di progetto. Ad esempio, seVersionPrefixè0.1.2e si passa--version-suffix rc.1adotnet pack, la versione del pacchetto sarà0.1.2-rc.1.Se
Versionha un valore e si passa--version-suffixadotnet pack, il valore specificato per--version-suffixviene ignorato.-
-?|-h|--helpStampa una descrizione di come usare il comando .
Esempi
Comprimere il progetto nella directory corrente:
dotnet packComprimere il
app1progetto:dotnet pack ~/projects/app1/project.csprojComprimere il progetto nella directory corrente e inserire i pacchetti risultanti nella
nupkgscartella :dotnet pack --output nupkgsComprimere il progetto nella directory corrente nella
nupkgscartella e ignorare il passaggio di compilazione:dotnet pack --no-build --output nupkgsCon il suffisso della versione del progetto configurato come
<VersionSuffix>$(VersionSuffix)</VersionSuffix>nel file con estensione csproj , comprimere il progetto corrente e aggiornare la versione del pacchetto risultante con il suffisso specificato:dotnet pack --version-suffix "ci-1234"Impostare la versione del pacchetto su
2.1.0con laPackageVersionproprietà MSBuild:dotnet pack -p:PackageVersion=2.1.0Comprimere il progetto per un framework di destinazione specifico:
dotnet pack -p:TargetFrameworks=net45Comprimere il progetto e usare un runtime specifico (Windows) per l'operazione di ripristino:
dotnet pack --runtime win-x64Comprimere il progetto usando un file con estensione nuspec (approccio basato sul progetto MSBuild):
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nugetPer informazioni su come usare
NuspecFile,NuspecBasePatheNuspecProperties, vedere le risorse seguenti:Comprimere direttamente un file con estensione nuspec , senza un file di progetto (.NET 10 e versioni successive):
dotnet pack MyPackage.nuspec --output ./artifacts ```dotnetcli dotnet pack MyPackage.nuspec --version 1.2.3 --output ./artifactsComprimere direttamente un file con estensione nuspec e usare la sostituzione dei token (.NET 10 e versioni successive):
dotnet pack MyPackage.nuspec --property:Version=1.2.3 --property:Configuration=Release --output ./artifacts