dotnet builddotnet build

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

NameName

dotnet build: consente di compilare un progetto e tutte le relative dipendenze.dotnet build - Builds a project and all of its dependencies.

RiepilogoSynopsis

dotnet build [<PROJECT>|<SOLUTION>] [-c|--configuration] [-f|--framework] [--force]
    [--interactive] [--no-dependencies] [--no-incremental] [--no-restore] [--nologo] 
    [-o|--output] [-r|--runtime] [-v|--verbosity] [--version-suffix]

dotnet build [-h|--help]

DescrizioneDescription

Il comando dotnet build compila il progetto e le relative dipendenze in un set di file binari.The dotnet build command builds the project and its dependencies into a set of binaries. I file binari includono il codice del progetto nei file Intermediate Language (IL) con estensione . dll .The binaries include the project's code in Intermediate Language (IL) files with a .dll extension. A seconda del tipo di progetto e delle impostazioni, è possibile includere altri file, ad esempio:Depending on the project type and settings, other files may be included, such as:

  • Eseguibile che può essere usato per eseguire l'applicazione, se il tipo di progetto è un file eseguibile destinato a .NET Core 3,0 o versione successiva.An executable that can be used to run the application, if the project type is an executable targeting .NET Core 3.0 or later.
  • File di simboli usati per il debug con estensione PDB .Symbol files used for debugging with a .pdb extension.
  • Un file con estensione Deps. JSON , che elenca le dipendenze dell'applicazione o della libreria.A .deps.json file, which lists the dependencies of the application or library.
  • Un file . runtimeconfig. JSON che specifica il runtime condiviso e la relativa versione per un'applicazione.A .runtimeconfig.json file, which specifies the shared runtime and its version for an application.
  • Altre librerie da cui dipende il progetto (tramite i riferimenti al progetto o i riferimenti ai pacchetti NuGet).Other libraries that the project depends on (via project references or NuGet package references).

Per i progetti eseguibili destinati a versioni precedenti a .NET Core 3,0, le dipendenze della libreria da NuGet non vengono in genere copiate nella cartella di output.For executable projects targeting versions earlier than .NET Core 3.0, library dependencies from NuGet are typically NOT copied to the output folder. Vengono risolti dalla cartella pacchetti globali NuGet in fase di esecuzione.They're resolved from the NuGet global packages folder at run time. Per queste ragioni, il prodotto di dotnet build non è pronto per essere trasferito in un altro computer per l'esecuzione.With that in mind, the product of dotnet build isn't ready to be transferred to another machine to run. Per creare una versione dell'applicazione che può essere distribuita, è necessario pubblicarla, ad esempio con il comando DotNet Publish .To create a version of the application that can be deployed, you need to publish it (for example, with the dotnet publish command). Per altre informazioni, vedere Distribuzione di applicazioni .NET Core.For more information, see .NET Core Application Deployment.

Per i progetti eseguibili destinati a .NET Core 3,0 e versioni successive, le dipendenze della libreria vengono copiate nella cartella di output.For executable projects targeting .NET Core 3.0 and later, library dependencies are copied to the output folder. Ciò significa che se non sono presenti altre logiche specifiche per la pubblicazione, ad esempio i progetti web, l'output di compilazione deve essere distribuibile.This means that if there isn't any other publish-specific logic (such as Web projects have), the build output should be deployable.

Per la compilazione è necessario il file project.assets.json, che elenca le dipendenze dell'applicazione.Building requires the project.assets.json file, which lists the dependencies of your application. Il file viene creato quando dotnet restore viene eseguito.The file is created when dotnet restore is executed. Senza il file di asset sul posto, gli strumenti non possono risolvere gli assembly di riferimento, generando così errori.Without the assets file in place, the tooling can't resolve reference assemblies, which results in errors. Con .NET Core 1. x SDK, era necessario eseguire in modo esplicito dotnet restore prima di eseguire dotnet build.With .NET Core 1.x SDK, you needed to explicitly run dotnet restore before running dotnet build. A partire da .NET Core 2.0 SDK, dotnet restore viene eseguito in modo implicito quando viene eseguito dotnet build.Starting with .NET Core 2.0 SDK, dotnet restore runs implicitly when you run dotnet build. Se si desidera disabilitare ripristino implicito quando si esegue il comando di compilazione, è possibile passare l’opzione --no-restore.If you want to disable implicit restore when running the build command, you can pass the --no-restore option.

Nota

A partire da .NET Core 2,0, non è necessario eseguire dotnet restore perché viene eseguito in modo implicito da tutti i comandi che richiedono un ripristino, ad esempio dotnet build e dotnet run.Starting with .NET Core 2.0, 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 build and dotnet run. È ancora un comando valido 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 del momento in cui viene eseguito il ripristino.It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control the time at which the restore occurs.

Questo comando supporta anche le opzioni dotnet restore passate nel formato lungo (ad esempio, --source).This command also 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.

La proprietà <OutputType> nel file di progetto determina se il progetto è eseguibile o meno.Whether the project is executable or not is determined by the <OutputType> property in the project file. L'esempio seguente descrive un progetto che produce codice eseguibile:The following example shows a project that produces executable code:

<PropertyGroup>
  <OutputType>Exe</OutputType>
</PropertyGroup>

Per produrre una libreria, omettere la proprietà <OutputType> o modificarne il valore in Library.To produce a library, omit the <OutputType> property or change its value to Library. La DLL il per una libreria non contiene punti di ingresso e non può essere eseguita.The IL DLL for a library doesn't contain entry points and can't be executed.

MSBuildMSBuild

Poiché dotnet build usa MSBuild per compilare il progetto, sono supportate le compilazioni parallele e incrementali.dotnet build uses MSBuild to build the project, so it supports both parallel and incremental builds. Per altre informazioni, vedere Compilazioni incrementali.For more information, see Incremental Builds.

In aggiunta alle proprie opzioni, il comando dotnet build accetta anche le opzioni di MSBuild, ad esempio -p per l'impostazione delle proprietà o -l per la definizione di un logger.In addition to its options, the dotnet build command accepts MSBuild options, such as -p for setting properties or -l to define a logger. Per altre informazioni su queste opzioni, vedere Riferimenti alla riga di comando di MSBuild.For more information about these options, see the MSBuild Command-Line Reference. In alternativa è anche possibile usare il comando dotnet msbuild.Or you can also use the dotnet msbuild command.

L'esecuzione di dotnet build equivale all'esecuzione di dotnet msbuild -restore; Tuttavia, il livello di dettaglio predefinito dell'output è diverso.Running dotnet build is equivalent to running dotnet msbuild -restore; however, the default verbosity of the output is different.

argomentiArguments

PROJECT | SOLUTION

File di progetto o di soluzione da compilare.The project or solution file to build. Se non viene specificato alcun file di progetto o di soluzione, MSBuild cercherà nella directory di lavoro corrente un file con estensione proj o sln e userà questo file.If a project or solution file isn't specified, MSBuild searches the current working directory for a file that has a file extension that ends in either proj or sln and uses that file.

OpzioniOptions

  • -c|--configuration {Debug|Release}

    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.

  • -f|--framework <FRAMEWORK>

    Esegue la compilazione per un framework specifico.Compiles for a specific framework. Il framework deve essere definito nel file di progetto.The framework must be defined in the project file.

  • --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. Disponibile a partire da .NET Core 2.0 SDK.Available since .NET Core 2.0 SDK.

  • -h|--help

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

  • --interactive

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

  • --no-dependencies

    Ignora i riferimenti da progetto a progetto e compila solo il progetto radice specificato.Ignores project-to-project (P2P) references and only builds the specified root project.

  • --no-incremental

    Contrassegna la compilazione come non sicura per la compilazione incrementale.Marks the build as unsafe for incremental build. Questo flag disattiva la compilazione incrementale e impone una ricompilazione pulita del grafico delle dipendenze del progetto.This flag turns off incremental compilation and forces a clean rebuild of the project's dependency graph.

  • --no-restore

    Non esegue un ripristino implicito durante la compilazione.Doesn't execute an implicit restore during build. Disponibile a partire da .NET Core 2.0 SDK.Available since .NET Core 2.0 SDK.

  • --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>

    Directory in cui inserire i file binari compilati.Directory in which to place the built binaries. Se non specificata, il percorso predefinito è ./bin/<configuration>/<framework>/.If not specified, the default path is ./bin/<configuration>/<framework>/. Per i progetti con più framework di destinazione (tramite la proprietà TargetFrameworks), è anche necessario definire --framework quando si specifica questa opzione.For projects with multiple target frameworks (via the TargetFrameworks property), you also need to define --framework when you specify this option.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Specifica il runtime di destinazione.Specifies the target runtime. 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.

  • -v|--verbosity <LEVEL>

    Imposta il livello di dettaglio di MSBuild.Sets the MSBuild verbosity level. 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]. Il valore predefinito è minimal.The default is minimal.

  • --version-suffix <VERSION_SUFFIX>

    Imposta il valore della proprietà $(VersionSuffix) da usare durante la compilazione del progetto.Sets the value of the $(VersionSuffix) property to use when building the project. Funziona solo se la proprietà $(Version) non è impostata.This only works if the $(Version) property isn't set. La proprietà $(Version) viene quindi impostata su $(VersionPrefix) combinata con $(VersionSuffix), separati da un trattino.Then, $(Version) is set to the $(VersionPrefix) combined with the $(VersionSuffix), separated by a dash.

EsempiExamples

  • Compilare un progetto e le relative dipendenze:Build a project and its dependencies:

    dotnet build
    
  • Compilare un progetto e le relative dipendenze usando la configurazione per il rilascio:Build a project and its dependencies using Release configuration:

    dotnet build --configuration Release
    
  • Compilare un progetto e le relative dipendenze per un runtime specifico ( in questo esempio, Ubuntu 18.04):Build a project and its dependencies for a specific runtime (in this example, Ubuntu 18.04):

    dotnet build --runtime ubuntu.18.04-x64
    
  • Compilare il progetto e usare l'origine del pacchetto NuGet specificato durante l'operazione di ripristino (.NET Core 2.0 SDK e versioni successive):Build the project and use the specified NuGet package source during the restore operation (.NET Core 2.0 SDK and later versions):

    dotnet build --source c:\packages\mypackages
    
  • Compilare il progetto e impostare la versione 1.2.3.4 come parametro di compilazione usando l'opzione MSBuild -p:Build the project and set version 1.2.3.4 as a build parameter using the -p MSBuild option:

    dotnet build -p:Version=1.2.3.4