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>] [-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 cartella src 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

  • -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 su net8.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] e diag[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 e VersionPrefix, 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 e VersionSuffix $(VersionPrefix)-$(VersionSuffix)

    Se si vuole usare --version-suffix, specificare VersionPrefix e non Version nel file di progetto. Ad esempio, se VersionPrefix è 0.1.2 e si passa --version-suffix rc.1 a dotnet pack, la versione del pacchetto sarà 0.1.2-rc.1.

    Se Version ha un valore e si passa --version-suffix a dotnet 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à MSBuild PackageVersion:

    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 e NuspecProperties, vedere le risorse seguenti: