Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo aplica-se a: ✔️ .NET 6 SDK e versões posteriores
Nome
dotnet build - Cria um projeto, solução ou aplicativo baseado em arquivo e todas as suas dependências.
Sinopse
dotnet build [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>] [-bl|--binaryLogger:<FILE>]
[-c|--configuration <CONFIGURATION>] [--disable-build-servers]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--no-dependencies] [--no-incremental] [--no-restore] [--nologo]
[--no-self-contained] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
[-p|--property:<PROPERTYNAME>=<VALUE>] [-r|--runtime <RUNTIME_IDENTIFIER>]
[--sc|--self-contained] [--source <SOURCE>]
[--tl:[auto|on|off]] [ --ucr|--use-current-runtime]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet build -h|--help
Description
O dotnet build comando cria o projeto, a solução ou o aplicativo baseado em arquivo e suas dependências em um conjunto de binários. Os binários incluem o código do projeto em arquivos de linguagem intermediária (IL) com uma extensão .dll . Dependendo do tipo de projeto e configurações, outros arquivos podem ser incluídos, como:
- Um executável que pode ser usado para executar o aplicativo.
- Arquivos de símbolos usados para depuração com uma extensão .pdb .
- Um arquivo .deps.json , que lista as dependências do aplicativo ou biblioteca.
- Um arquivo .runtimeconfig.json , que especifica o tempo de execução compartilhado e sua versão para um aplicativo.
- Outras bibliotecas das quais o projeto depende (por meio de referências de projeto ou referências de pacote NuGet).
Para projetos executáveis destinados ao .NET Core 3.0 e posterior, as dependências da biblioteca são copiadas para a pasta de saída. Isso significa que, se não houver nenhuma outra lógica específica de publicação (como projetos da Web), a saída da compilação deve ser implantável.
Restauração implícita
A criação requer o arquivo project.assets.json , que lista as dependências do seu aplicativo. O arquivo é criado quando dotnet restore é executado. Sem o arquivo de ativos no lugar, as ferramentas não podem resolver assemblies de referência, o que resulta em erros.
Você não precisa executar dotnet restore porque ele é executado implicitamente por todos os comandos que exigem uma restauração para ocorrer, como dotnet new, dotnet build, dotnet run, dotnet test, dotnet publishe dotnet pack. Para desativar a restauração implícita, use a --no-restore opção.
O dotnet restore comando ainda é útil em determinados cenários em que a restauração explícita faz sentido, como compilações de integração contínua nos Serviços de DevOps do Azure ou em sistemas de compilação que precisam controlar explicitamente quando a restauração ocorre.
Para obter informações sobre como gerenciar feeds NuGet, consulte a dotnet restore documentação.
Este comando suporta as dotnet restore opções quando passado na forma longa (por exemplo, --source). Opções de formulário curto, como -s, não são suportadas.
Saída executável ou de biblioteca
Se o projeto é executável ou não é determinado pela <OutputType> propriedade no arquivo de projeto. O exemplo a seguir mostra um projeto que produz código executável:
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
Para produzir uma biblioteca, omita a <OutputType> propriedade ou altere seu valor para Library. A DLL IL para uma biblioteca não contém pontos de entrada e não pode ser executada.
MSBuild
dotnet build usa o MSBuild para criar o projeto, a solução ou o aplicativo baseado em arquivo. Ele suporta compilações paralelas e incrementais. Para obter mais informações, consulte Compilações incrementais.
Além de suas opções, o comando aceita opções do dotnet build MSBuild, como -p para definir propriedades ou -l para definir um registrador. Para obter mais informações sobre essas opções, consulte a referência de linha de comando do MSBuild. Ou você também pode usar o comando dotnet msbuild .
Nota
Quando dotnet build é executado automaticamente por dotnet run, argumentos como -property:property=value não são respeitados.
Executar dotnet build é equivalente a executar dotnet msbuild -restore, no entanto, a verbosidade padrão da saída é diferente.
Downloads de manifesto de carga de trabalho
Quando você executa esse comando, ele inicia um download assíncrono em segundo plano de manifestos de publicidade para cargas de trabalho. Se o download ainda estiver em execução quando este comando terminar, o download será interrompido. Para obter mais informações, consulte Manifestos de publicidade.
Argumentos
PROJECT | SOLUTION | FILE
O projeto ou solução ou arquivo C# (aplicativo baseado em arquivo) para operar. Se um arquivo não for especificado, o MSBuild procurará um projeto ou solução no diretório atual.
PROJECTé o caminho e o nome do arquivo de projeto de um C#, F# ou Visual Basic ou o caminho para um diretório que contém um arquivo de projeto C#, F# ou Visual Basic.SOLUTIONé o caminho e o nome do arquivo de solução (.sln ou extensão .slnx) ou o caminho para um diretório que contém um arquivo de solução.FILEé um argumento adicionado no .NET 10. O caminho e o nome do arquivo de um aplicativo baseado em arquivo. Os aplicativos baseados em arquivo estão contidos em um único arquivo que é criado e executado sem um arquivo de projeto correspondente (.csproj). Para obter mais informações, consulte Criar aplicativos C# baseados em arquivo.
Opções
-
-a|--arch <ARCHITECTURE>Especifica a arquitetura de destino. Esta é uma sintaxe abreviada para definir o Runtime Identifier (RID), onde o valor fornecido é combinado com o RID padrão. Por exemplo, em uma
win-x64máquina, especificar--arch x86define o RID comowin-x86. Se você usar essa opção, não use a-r|--runtimeopção. Disponível desde o .NET 6 Preview 7. -
--artifacts-path <ARTIFACTS_DIR>Todos os arquivos de saída de compilação do comando executado irão em subpastas sob o caminho especificado, separados por projeto. Para obter mais informações, consulte Layout de saída de artefatos. Disponível desde o SDK do .NET 8.
-bl|--binaryLogger:<FILE>Ativa o logger binário e especifica opcionalmente o nome do ficheiro de saída.
Se não for fornecido o nome do ficheiro, o predefinido estámsbuild.binlogno diretório atual.O registo binário contém informações detalhadas de compilação e pode ser aberto com o MSBuild Structured Log Viewer.
dotnet build -bl dotnet build -bl:build-log.binlog-
-c|--configuration <CONFIGURATION>Define a configuração de compilação. O padrão para a maioria dos projetos é
Debug, mas você pode substituir as definições de configuração de compilação em seu projeto. -
--disable-build-serversForça o comando a ignorar quaisquer servidores de compilação persistentes. Essa opção fornece uma maneira consistente de desabilitar todo o uso do cache de compilação, o que força uma compilação do zero. Uma compilação que não depende de caches é útil quando os caches podem estar corrompidos ou incorretos por algum motivo. Disponível desde .NET 7 SDK.
-f|--framework <FRAMEWORK>Compila para uma estrutura específica. A estrutura deve ser definida no arquivo do projeto. Exemplos:
net7.0,net462.--forceForça todas as dependências a serem resolvidas, mesmo que a última restauração tenha sido bem-sucedida. Especificar esse sinalizador é o mesmo que excluir o arquivo project.assets.json .
-
--interactivePermite que o comando pare e aguarde a entrada ou ação do usuário. Por exemplo, para concluir a autenticação.
--no-dependenciesIgnora referências de projeto a projeto (P2P) e cria apenas o projeto raiz especificado.
--no-incrementalMarca a compilação como insegura para compilação incremental. Esse sinalizador desativa a compilação incremental e força uma reconstrução limpa do gráfico de dependência do projeto.
--no-restoreNão executa uma restauração implícita durante a compilação.
--nologoNão exibe o banner de inicialização ou a mensagem de direitos autorais.
-
--no-self-containedPublique a sua candidatura como uma aplicação dependente do framework. Um tempo de execução .NET compatível deve ser instalado na máquina de destino para executar seu aplicativo.
-o|--output <OUTPUT_DIRECTORY>Diretório no qual colocar os binários construídos. Se não for especificado, o caminho padrão será
./bin/<configuration>/<framework>/. Para projetos com várias estruturas de destino (por meio daTargetFrameworkspropriedade), você também precisa definir--frameworkquando especificar essa opção.SDK do .NET 7.0.200 e posterior
Se você especificar a
--outputopção ao executar esse comando em uma solução, a CLI emitirá um aviso (um erro em 7.0.200) devido à semântica pouco clara do caminho de saída. A--outputopção não é permitida porque todas as saídas de todos os projetos construídos seriam copiadas para o diretório especificado, que não é compatível com projetos com vários destinos, bem como projetos que têm diferentes versões de dependências diretas e transitivas. Para obter mais informações, consulte A opção de nível--outputde solução não é mais válida para comandos relacionados à compilação.
-
--os <OS>Especifica o sistema operacional (SO) de destino. Esta é uma sintaxe abreviada para definir o Runtime Identifier (RID), onde o valor fornecido é combinado com o RID padrão. Por exemplo, em uma
win-x64máquina, especificar--os linuxdefine o RID comolinux-x64. Se você usar essa opção, não use a-r|--runtimeopção. Disponível desde .NET 6. -p|--property:<PROPERTYNAME>=<VALUE>Define uma ou mais propriedades do MSBuild. Especifique várias propriedades delimitadas por ponto-e-vírgula ou repetindo a opção:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>-r|--runtime <RUNTIME_IDENTIFIER>Especifica o tempo de execução de destino. Para obter uma lista de identificadores de tempo de execução (RIDs), consulte o catálogo RID. Se você usar essa opção com o SDK do .NET 6, use
--self-containedou--no-self-containedtambém. Se não for especificado, o padrão é compilar para o sistema operacional e a arquitetura atuais.-
--sc|--self-containedPublique o tempo de execução do .NET com seu aplicativo para que o tempo de execução não precise ser instalado na máquina de destino.
--source <SOURCE>O URI da origem do pacote NuGet a ser usado durante a operação de restauração.
-
--tl:[auto|on|off]Especifica se o Terminal Logger deve ser usado para a saída de compilação. O padrão é
auto, que primeiro verifica o ambiente antes de habilitar o registro em log do terminal. A verificação de ambiente verifica se o terminal é capaz de usar recursos de saída modernos e não está usando uma saída padrão redirecionada antes de ativar o novo registrador.onignora a verificação do ambiente e habilita o registro em log do terminal.offignora a verificação de ambiente e usa o registrador de console padrão.O Terminal Logger mostra a fase de restauração seguida pela fase de compilação. Durante cada fase, os projetos atualmente em construção aparecem na parte inferior do terminal. Cada projeto que está construindo produz tanto a meta do MSBuild que está sendo criada quanto a quantidade de tempo gasto nessa meta. Você pode pesquisar essas informações para saber mais sobre a compilação. Quando um projeto termina de construir, uma única seção "construção concluída" é escrita que captura:
- O nome do projeto construído.
- A estrutura de destino (se multidirecionada).
- O status dessa compilação.
- A saída primária dessa compilação (que é hiperligada).
- Qualquer diagnóstico gerado para esse projeto.
Esta opção está disponível a partir do .NET 8.
-
--ucr|--use-current-runtimeUse o tempo de execução atual como o tempo de execução de destino.
-
-v|--verbosity <LEVEL>Define o nível de detalhamento do comando. Os valores permitidos são
q[uiet],m[inimal],n[ormal],d[etailed], ediag[nostic]. Para obter mais informações, consulte LoggerVerbosity. --version-suffix <VERSION_SUFFIX>Define o
$(VersionSuffix)valor da propriedade a ser usada ao criar o projeto. Isso só funciona se a$(Version)propriedade não estiver definida. Em seguida,$(Version)é definido como o$(VersionPrefix)combinado com o$(VersionSuffix), separado por um traço.-
-?|-h|--helpImprime uma descrição de como usar o comando.
Exemplos
Crie um projeto e suas dependências:
dotnet buildCrie um aplicativo baseado em arquivo:
dotnet build MyProject.csO suporte a aplicativos baseados em arquivo foi adicionado no .NET SDK 10.0.100.
Crie um projeto e suas dependências usando a configuração de versão:
dotnet build --configuration ReleaseCrie um projeto e suas dependências para um tempo de execução específico (neste exemplo, Linux):
dotnet build --runtime linux-x64Crie o projeto e use a origem do pacote NuGet especificada durante a operação de restauração:
dotnet build --source c:\packages\mypackagesCrie o projeto e defina a versão 1.2.3.4 como um parâmetro de compilação usando a
-popção MSBuild:dotnet build -p:Version=1.2.3.4