dotnet packdotnet pack

Questo articolo si applica a: ✔️ .NET Core 2. x SDK e versioni successiveThis article applies to: ✔️ .NET Core 2.x SDK and later versions

NomeName

dotnet pack: comprime il codice in un pacchetto NuGet.dotnet pack - Packs the code into a NuGet package.

RiepilogoSynopsis

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] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

DescriptionDescription

Il comando dotnet pack consente di compilare il progetto e creare pacchetti NuGet.The dotnet pack command builds the project and creates NuGet packages. Il risultato di questo comando è un pacchetto NuGet, ovvero un file con estensione nupkg .The result of this command is a NuGet package (that is, a .nupkg file).

Se si desidera generare un pacchetto che contiene i simboli di debug, sono disponibili due opzioni:If you want to generate a package that contains the debug symbols, you have two options available:

  • --include-symbols-Crea il pacchetto di simboli.--include-symbols - it creates the symbols package.
  • --include-source-Crea il pacchetto di simboli con una src cartella all'interno di che contiene i file di origine.--include-source - it creates the symbols package with a src folder inside containing the source files.

Le dipendenze NuGet del progetto compresso vengono aggiunte al file con estensione nuspec, in modo da poter essere risolte durante l'installazione del pacchetto.NuGet dependencies of the packed project are added to the .nuspec file, so they're properly resolved when the package is installed. I riferimenti da progetto a progetto non sono inseriti all'interno del progetto.Project-to-project references aren't packaged inside the project. Attualmente è necessario disporre di un pacchetto per ogni progetto se sono presenti dipendenze da progetto a progetto.Currently, you must have a package per project if you have project-to-project dependencies.

Per impostazione predefinita, dotnet pack compila prima il progetto.By default, dotnet pack builds the project first. Se si vuole evitare questo comportamento, passare l'opzione --no-build.If you wish to avoid this behavior, pass the --no-build option. 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.This option is often useful in Continuous Integration (CI) build scenarios where you know the code was previously built.

Nota

In alcuni casi, non è possibile eseguire la compilazione implicita.In some cases, the implicit build cannot be performed. Questo problema può verificarsi quando GeneratePackageOnBuild è impostato, per evitare una dipendenza ciclica tra le destinazioni di compilazione e di Pack.This can occur when GeneratePackageOnBuild is set, to avoid a cyclic dependency between build and pack targets. La compilazione può anche avere esito negativo se è presente un file bloccato o un altro problema.The build can also fail if there is a locked file or other issue.

È possibile aggiungere proprietà MSBuild al comando dotnet pack per il processo di compressione.You can provide MSBuild properties to the dotnet pack command for the packing process. 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).For more information, see NuGet metadata properties and the MSBuild Command-Line Reference. La sezione Esempi illustra come usare l'opzione di MSBuild -p per due diversi scenari.The Examples section shows how to use the MSBuild -p switch for a couple of different scenarios.

Per impostazione predefinita, non è possibile creare un pacchetto dei progetti Web.Web projects aren't packable by default. Per eseguire l'override del comportamento predefinito, aggiungere la proprietà seguente al file con estensione csproj:To override the default behavior, add the following property to your .csproj file:

<PropertyGroup>
   <IsPackable>true</IsPackable>
</PropertyGroup>

Ripristino implicitoImplicit restore

Non è necessario eseguire dotnet restore perché viene eseguito in modo implicito da tutti dotnet newi dotnet build dotnet runcomandi dotnet test dotnet publishche dotnet packrichiedono il ripristino, ad esempio , , , , e .You don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, and dotnet pack. Per disabilitare il --no-restore ripristino implicito, utilizzare l'opzione .To disable implicit restore, use the --no-restore option.

Il dotnet restore comando è comunque utile in alcuni scenari in cui il ripristino esplicito ha senso, ad esempio le compilazioni di integrazione continua nei servizi DevOps di Azure o nei sistemi di compilazione che devono controllare in modo esplicito quando si verifica il ripristino.The dotnet restore command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.

Per informazioni su come gestire i feed NuGet, vedere la dotnet restore documentazione.For information about how to manage NuGet feeds, see the dotnet restore documentation.

Questo comando supporta dotnet restore le opzioni quando vengono passate --sourcenel formato lungo , ad esempio ).This command supports the dotnet restore options when passed in the long form (for example, --source). Le opzioni in formato breve, come -s, non sono supportate.Short form options, such as -s, are not supported.

ArgumentsArguments

PROJECT | SOLUTION

Progetto o soluzione da comprimere.The project or solution to pack. Si tratta di un percorso a un file csproj, un file vbproj, un file fsproj, un file di soluzione o a una directory.It's either a path to a csproj file, vbproj file, fsproj file, a solution file, or to a directory. Se non specificato, il comando Cerca nella directory corrente un file di progetto o di soluzione.If not specified, the command searches the current directory for a project or solution file.

OpzioniOptions

  • -c|--configuration <CONFIGURATION>

    Definisce la configurazione di compilazione.Defines the build configuration. Il valore predefinito per la maggior parte dei progetti è Debug , ma è possibile eseguire l'override delle impostazioni di configurazione della build nel progetto.The default for most projects is Debug, but you can override the build configuration settings in your project.

  • --force

    Forza la risoluzione di tutte le dipendenze, anche se l'ultimo ripristino ha avuto esito positivo.Forces all dependencies to be resolved even if the last restore was successful. La specifica di questo flag equivale all'eliminazione del file project.assets.json.Specifying this flag is the same as deleting the project.assets.json file.

  • -h|--help

    Stampa una breve guida per il comando.Prints out a short help for the command.

  • --include-source

    Include i pacchetti NuGet dei simboli di debug oltre ai pacchetti NuGet normali nella directory di output.Includes the debug symbols NuGet packages in addition to the regular NuGet packages in the output directory. I file di origine sono inclusi nella src cartella all'interno del pacchetto di simboli.The sources files are included in the src folder within the symbols package.

  • --include-symbols

    Include i pacchetti NuGet dei simboli di debug oltre ai pacchetti NuGet normali nella directory di output.Includes the debug symbols NuGet packages in addition to the regular NuGet packages in the output directory.

  • --interactive

    Consente al comando di arrestarsi e attendere l'input o l'azione dell'utente (ad esempio, il completamento dell'autenticazione).Allows the command to stop and wait for user input or action (for example, to complete authentication). Disponibile a partire da .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

  • --no-build

    Non compila il progetto prima della compressione.Doesn't build the project before packing. Imposta anche in modo implicito il flag --no-restore.It also implicitly sets the --no-restore flag.

  • --no-dependencies

    Ignora i riferimenti da progetto a progetto e ripristina solo il progetto radice.Ignores project-to-project references and only restores the root project.

  • --no-restore

    Non esegue un ripristino implicito quando si esegue il comando.Doesn't execute an implicit restore when running the command.

  • --nologo

    Non visualizza il messaggio di avvio né il messaggio di copyright.Doesn't display the startup banner or the copyright message. Disponibile a partire da .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

  • -o|--output <OUTPUT_DIRECTORY>

    Inserisce i pacchetti compilati nella directory specificata.Places the built packages in the directory specified.

  • --runtime <RUNTIME_IDENTIFIER>

    Specifica il runtime di destinazione per cui ripristinare i pacchetti.Specifies the target runtime to restore packages for. Per un elenco degli identificatori di runtime (RID, Runtime Identifier), vedere il catalogo RID.For a list of Runtime Identifiers (RIDs), see the RID catalog.

  • -s|--serviceable

    Imposta il flag utilizzabile dai servizi nel pacchetto.Sets the serviceable flag in the package. Per altre informazioni, vedere .NET Blog: .NET 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries (Blog .NET: .NET 4.5.1 supporta gli aggiornamenti della sicurezza Microsoft per le librerie NuGet di .NET).For more information, see .NET Blog: .NET 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries.

  • --version-suffix <VERSION_SUFFIX>

    Definisce il valore della proprietà MSBuild $(VersionSuffix) nel progetto.Defines the value for the $(VersionSuffix) MSBuild property in the project.

  • -v|--verbosity <LEVEL>

    Imposta il livello di dettaglio del comando.Sets the verbosity level of the command. I valori consentiti sono q[uiet], m[inimal], n[ormal], d[etailed] e diag[nostic].Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic].

EsempiExamples

  • Comprimere il progetto nella directory corrente:Pack the project in the current directory:

    dotnet pack
    
  • Comprimere il progetto app1:Pack the app1 project:

    dotnet pack ~/projects/app1/project.csproj
    
  • Comprimere il progetto nella directory corrente e inserire i pacchetti risultanti nella cartella nupkgs:Pack the project in the current directory and place the resulting packages into the nupkgs folder:

    dotnet pack --output nupkgs
    
  • Comprimere il progetto nella directory corrente e inserirlo nella cartella nupkgs, ignorando il passaggio relativo alla compilazione:Pack the project in the current directory into the nupkgs folder and skip the build step:

    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:With the project's version suffix configured as <VersionSuffix>$(VersionSuffix)</VersionSuffix> in the .csproj file, pack the current project and update the resulting package version with the given suffix:

    dotnet pack --version-suffix "ci-1234"
    
  • Impostare la versione del pacchetto su 2.1.0 con la proprietà MSBuild PackageVersion:Set the package version to 2.1.0 with the PackageVersion MSBuild property:

    dotnet pack -p:PackageVersion=2.1.0
    
  • Comprimere il progetto per un framework di destinazione specifico:Pack the project for a specific target framework:

    dotnet pack -p:TargetFrameworks=net45
    
  • Comprimere il progetto e usare un runtime specifico (Windows 10) per l'operazione di ripristino:Pack the project and use a specific runtime (Windows 10) for the restore operation:

    dotnet pack --runtime win10-x64
    
  • Comprimere il progetto usando un file con estensione NuSpec :Pack the project using a .nuspec file:

    dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
    

    Per informazioni sull'utilizzo di NuspecFile , NuspecBasePath e NuspecProperties , vedere le risorse seguenti:For information about how to use NuspecFile, NuspecBasePath, and NuspecProperties, see the following resources: