dotnet pack
Questo articolo si applica a: ✔️ .NET Core 3.1 SDK e versioni successive
Nome
dotnet pack
: comprime il codice in un pacchetto NuGet.
Riepilogo
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
Descrizione
Il comando dotnet pack
consente di compilare il progetto e creare pacchetti NuGet. Il risultato di questo comando è un pacchetto NuGet, ovvero un file con estensione nupkg.
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 una cartellasrc
all'interno dei file di origine.
Le dipendenze NuGet del progetto compresso vengono aggiunte al file con estensione nuspec, in modo da poter essere risolte durante l'installazione del pacchetto. Se il progetto compresso contiene riferimenti ad altri progetti, gli altri progetti non vengono inclusi nel pacchetto. Attualmente è necessario disporre di un pacchetto per ogni progetto se sono presenti dipendenze da progetto a progetto.
Per impostazione predefinita, dotnet pack
compila prima il progetto. Se si vuole evitare questo comportamento, passare l'opzione --no-build
. Questa opzione è in genere utile negli scenari di compilazione di integrazione continua (CI, Continuous Integration) in cui si sa che il codice è stato compilato in precedenza.
Nota
In alcuni casi, non è possibile eseguire la compilazione implicita. Ciò può verificarsi quando è impostato GeneratePackageOnBuild
, 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.
È possibile aggiungere proprietà MSBuild al comando dotnet pack
per il processo di compressione. Per altre informazioni, vedere NuGet metadata properties (Proprietà dei metadati NuGet) e MSBuild Command-Line Reference (Informazioni di riferimento sulla riga di comando di MSBuild). La sezione Esempi illustra come usare l'opzione -p
MSBuild per un paio di scenari diversi.
Nota
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.
Argomenti
PROJECT | SOLUTION
Progetto o soluzione da comprimere. Si tratta di un percorso di un file csproj, vbproj o fsproj o di un file o di una directory della soluzione. Se non specificato, il comando cerca nella directory corrente un file di progetto o di soluzione.
Opzioni
--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 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 una versione successiva, il comando usa la
Release
configurazione per impostazione predefinita per i progetti il cui targetFramework è impostato sunet8.0
o una versione successiva. La configurazione di compilazione predefinita èDebug
per 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' uses Release configuration and 'dotnet pack' uses Release configuration.For more information, see 'dotnet publish' uses Release configuration and 'dotnet pack' uses Release configuration.
--force
Forza la risoluzione di tutte le dipendenze, anche se l'ultimo ripristino ha avuto esito positivo. La specifica di questo flag equivale all'eliminazione del file project.assets.json.
-?|-h|--help
Stampa le istruzioni di utilizzo del comando.
--include-source
Include i simboli di debug dei pacchetti NuGet oltre ai normali pacchetti NuGet nella directory di output. I file di origine sono inclusi nella cartella
src
all'interno del pacchetto di simboli.--include-symbols
Include i simboli di debug dei pacchetti NuGet oltre ai normali pacchetti NuGet nella directory di output.
--interactive
Consente al comando di arrestarsi e attendere l'input o l'azione dell'utente, ad esempio il completamento dell'autenticazione. Disponibile a partire da .NET Core 3.0 SDK.
--no-build
Non compila il progetto prima della compressione. Imposta anche in modo implicito il flag
--no-restore
.--no-dependencies
Ignora i riferimenti da progetto a progetto e ripristina solo il progetto radice.
--no-restore
Non esegue un ripristino implicito quando si esegue il comando.
--nologo
Non visualizza il messaggio di avvio né il messaggio di copyright.
-o|--output <OUTPUT_DIRECTORY>
Inserisce i pacchetti compilati nella directory specificata.
.NET 7.0.200 SDK
Nell'SDK 7.0.200, se si specifica l'opzione
--output
quando 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.
--runtime <RUNTIME_IDENTIFIER>
Specifica il runtime di destinazione per cui ripristinare i pacchetti. Per un elenco degli identificatori di runtime (RID, Runtime Identifier), vedere il catalogo RID.
-s|--serviceable
Imposta il flag utilizzabile dai servizi nel pacchetto. Per altre informazioni, vedere blog di .NET: .NET Framework 4.5.1 Supporta gli aggiornamenti della sicurezza Microsoft per le librerie NuGet .NET.
--tl:[auto|on|off]
Specifica se il logger del terminale deve essere usato per l'output di compilazione. Il valore predefinito è
auto
, che prima di abilitare la registrazione del terminale verifica l'ambiente. Prima di abilitare il nuovo logger, il controllo dell'ambiente verifica che il terminale sia in grado di usare le funzionalità di output moderne e che non utilizzi un output standard reindirizzato.on
ignora il controllo dell'ambiente e abilita la registrazione del terminale.off
ignora il controllo dell'ambiente e usa il logger di console predefinito.Il logger del terminale mostra la fase di ripristino seguita dalla fase di compilazione. Durante ogni fase, i progetti che sono in corso 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:
- Il nome del progetto compilato.
- Il framework di destinazione (se sono presenti più destinazioni).
- Lo stato della compilazione.
- L'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 ulteriori informazioni, vedere LoggerVerbosity.
--version-suffix <VERSION_SUFFIX>
Definisce il valore per la proprietà MSBuild
VersionSuffix
. L'effetto di questa proprietà sulla versione del pacchetto dipende dai valori delle proprietàVersion
eVersionPrefix
, come illustrato nella tabella seguente:Proprietà con valori Versione pacchetto None 1.0.0
Version
$(Version)
Solo VersionPrefix
$(VersionPrefix)
Solo VersionSuffix
1.0.0-$(VersionSuffix)
VersionPrefix
eVersionSuffix
$(VersionPrefix)-$(VersionSuffix)
Se si vuole usare
--version-suffix
, specificareVersionPrefix
e nonVersion
nel file di progetto. Ad esempio, seVersionPrefix
è0.1.2
e si passa--version-suffix rc.1
adotnet pack
, la versione del pacchetto sarà0.1.2-rc.1
.Se
Version
ha un valore e si passa--version-suffix
adotnet pack
, il valore specificato per--version-suffix
viene ignorato.
Esempi
Comprimere il progetto nella directory corrente:
dotnet pack
Comprimere il progetto
app1
:dotnet pack ~/projects/app1/project.csproj
Comprimere il progetto nella directory corrente e inserire i pacchetti risultanti nella cartella
nupkgs
:dotnet pack --output nupkgs
Comprimere il progetto nella directory corrente e inserirlo nella cartella
nupkgs
, ignorando il passaggio relativo alla compilazione:dotnet pack --no-build --output nupkgs
Con 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.0
con la proprietà MSBuildPackageVersion
:dotnet pack -p:PackageVersion=2.1.0
Comprimere il progetto per un framework di destinazione specifico:
dotnet pack -p:TargetFrameworks=net45
Comprimere il progetto e usare un runtime specifico (Windows) per l'operazione di ripristino:
dotnet pack --runtime win-x64
Comprimere il progetto usando un file con estensione nuspec:
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
Per informazioni su come usare
NuspecFile
,NuspecBasePath
eNuspecProperties
, vedere le risorse seguenti: