Partilhar via


Referência de linha de comando do MSBuild

Quando você usa MSBuild.exe para criar um projeto ou arquivo de solução, você pode incluir várias opções para especificar vários aspetos do processo.

Cada interruptor está disponível em duas formas: -switch e /switch. A documentação mostra apenas o formulário -switch. Os switches não diferenciam maiúsculas de minúsculas. Se você executar o MSBuild a partir de um shell diferente do prompt de comando do Windows, as listas de argumentos para uma opção (separadas por ponto-e-vírgula ou vírgulas) podem precisar de aspas simples ou duplas para garantir que as listas sejam passadas para o MSBuild em vez de interpretadas pelo shell.

Os comandos da CLI do .NET dotnet build, dotnet publish, dotnet msbuild e comandos relacionados passam essas opções para o MSBuild, portanto, essa referência é aplicável quando você usa esses comandos; no entanto, dotnet run não.

Sintaxe

MSBuild.exe [Switches] [ProjectFile]

Argumentos

Argumento Descrição
ProjectFile Cria os destinos no arquivo de projeto que você especificar. Se você não especificar um arquivo de projeto, o MSBuild procurará no diretório de trabalho atual uma extensão de nome de arquivo que termine em proj e use esse arquivo. Você também pode especificar um arquivo de solução do Visual Studio para esse argumento.

Comutadores

A primeira coluna da tabela a seguir mostra uma forma longa e curta de cada opção. Ambas as formas são equivalentes.

Os colchetes [] indicar peças opcionais e os suportes encaracolados {}indicar valores fornecidos pelo usuário.

Mudar Descrição
-detailedSummary[:{True or False}]

-ds[:{True or False}]
Se True, mostre informações detalhadas no final do log de compilação sobre as configurações que foram criadas e como elas foram agendadas para nós.
-getItem:{itemName,...} Escreva o valor do item ou itens após a avaliação, sem executar a compilação, ou se a opção -targets ou a opção -getTargetResult for usada, escreva os valores após a compilação.
-getProperty:{propertyName,...} Escreva o valor da propriedade ou propriedades após a avaliação, sem executar a compilação, ou se a opção -targets ou a opção -getTargetResult for usada, escreva os valores após a compilação.
-getTargetResult:{targetName,...} Escreva os valores de saída dos destinos especificados.
-graphBuild[:{True or False}]

-graph[:{True or False}]
Faz com que o MSBuild construa e construa um gráfico de projeto. A construção de um gráfico envolve a identificação de referências de projeto para formar dependências. A construção desse gráfico envolve a tentativa de construir referências de projeto antes dos projetos que as referenciam, diferindo do agendamento tradicional do MSBuild. Requer MSBuild 16 ou posterior.
-help

/? ou -h
Exibir informações de uso. O comando a seguir é um exemplo:

msbuild.exe -?
-ignoreProjectExtensions: {extensions}

-ignore: {extensions}
Ignore as extensões especificadas ao determinar qual arquivo de projeto compilar. Use um ponto-e-vírgula ou uma vírgula para separar várias extensões, como mostra o exemplo a seguir:

-ignoreprojectextensions:.vcproj,.sln
-inputResultsCaches[:{cacheFile; ...}]

-irc[:{cacheFile; ...}]
Lista separada por ponto-e-vírgula de arquivos de cache de entrada dos quais o MSBuild lerá os resultados da compilação. Se -isolateProjects estiver definido como False, isso o definirá como True.
-interactive[:{True or False}] Indica que as ações na compilação têm permissão para interagir com o usuário. Não use esse argumento em um cenário automatizado onde a interatividade não é esperada. Especificar -interactive é o mesmo que especificar -interactive:true. Use o parâmetro para substituir um valor que vem de um arquivo de resposta.
-isolateProjects[:{True, MessageUponIsolationViolation, False}]

-isolate[:{True, MessageUponIsolationViolation, False}]
Faz com que o MSBuild crie cada projeto isoladamente. Quando definido como MessageUponIsolationViolation (ou sua forma curta Message), somente os resultados de destinos de nível superior são serializados se a opção -outputResultsCache for fornecida. Essa opção é para mitigar as chances de um destino que viola o isolamento em um projeto de dependência usar um estado incorreto devido à sua dependência de um destino armazenado em cache cujos efeitos colaterais não seriam levados em conta. (Por exemplo, a definição de uma propriedade.) Esse modo é mais restritivo, pois requer que o gráfico do projeto seja detetável estaticamente no momento da avaliação, mas pode melhorar o agendamento e reduzir a sobrecarga de memória ao criar um grande conjunto de projetos.
-lowPriority[:{True or False}]

-low[:{True or False}]
Faz com que o MSBuild seja executado com baixa prioridade de processo. Especificar -lowPriority é o mesmo que especificar -lowPriority:True.
-maxCpuCount[:{number}]

-m[:{number}]
Especifica o número máximo de processos simultâneos a serem usados durante a construção. Se você não incluir essa opção, o valor padrão será 1. Se você incluir essa opção sem especificar um valor, o MSBuild usará até o número de processadores no computador. Para obter mais informações, consulte Criando vários projetos em paralelo.

O exemplo a seguir instrui o MSBuild a compilar usando três processos do MSBuild, o que permite que três projetos sejam compilados ao mesmo tempo:

msbuild myproject.proj -maxcpucount:3
-noAutoResponse

-noautorsp
Não inclua nenhum MSBuild.rsp ou arquivos Directory.Build.rsp automaticamente.
-nodeReuse:{value}

-nr:{value}
Habilite ou desabilite a reutilização de nós do MSBuild. Você pode especificar os seguintes valores:

- True. Os nós permanecem após a conclusão da compilação para que as compilações subsequentes possam usá-los (padrão).
- Falso. Os nós não permanecem após a conclusão da compilação.

Um nó corresponde a um projeto em execução. Se você incluir o switch -maxcpucount, vários nós poderão ser executados simultaneamente.
-nologo Não exiba o banner de inicialização ou a mensagem de direitos autorais.
-preprocess[:{filepath}]

-pp[:{filepath}]
Crie um único arquivo de projeto agregado inserindo todos os arquivos que seriam importados durante uma compilação, com seus limites marcados. Você pode usar essa opção para determinar mais facilmente quais arquivos estão sendo importados, de onde os arquivos estão sendo importados e quais arquivos contribuem para a compilação. Quando você usa essa opção, o projeto não é construído.

Se você especificar um filepath, o arquivo de projeto agregado será gerado para o arquivo. Caso contrário, a saída aparecerá na janela do console.

Para obter informações sobre como usar o elemento Import para inserir um arquivo de projeto em outro arquivo de projeto, consulte elemento de importação (MSBuild) e Como: Usar o mesmo destino em vários arquivos de projeto.
-outputResultsCache[:{cacheFile}]

-orc[:{cacheFile}]
Arquivo de cache de saída onde o MSBuild grava o conteúdo de seus caches de resultados de compilação no final da compilação. Se -isolateProjects estiver definido como False, isso o definirá como True.
profileEvaluation:{file} Perfis de avaliação do MSBuild e grava o resultado no arquivo especificado. Se a extensão do arquivo especificado for '.md', o resultado será gerado no formato Markdown. Caso contrário, um arquivo separado por tabulações será produzido.
-property:{name}={value}

-p:{name}={value}
Defina ou substitua as propriedades especificadas no nível do projeto, onde name é o nome da propriedade e value é o valor da propriedade. Especifique cada propriedade separadamente ou use um ponto-e-vírgula ou vírgula para separar várias propriedades, como mostra o exemplo a seguir:

-property:WarningLevel=2;OutDir=bin\Debug

Consulte de propriedades comuns do projeto MSBuild para obter uma lista das propriedades mais usadas. O conjunto completo de propriedades disponíveis depende do tipo de projeto, SDK e arquivos importados.
-restore

-r
Executa o destino Restore antes de criar os destinos reais.
-restoreProperty:{name}={value}

-rp:{name}={value}
Defina ou substitua essas propriedades no nível do projeto somente durante a restauração e não use as propriedades especificadas com o argumento -property. name é o nome da propriedade e value é o valor da propriedade. Use um ponto-e-vírgula ou uma vírgula para separar várias propriedades ou especifique cada propriedade separadamente.
-target:{targets}

-t:{targets}
Crie os destinos especificados no projeto. Especifique cada destino separadamente ou use um ponto-e-vírgula ou vírgula para separar vários destinos, como mostra o exemplo a seguir:

-target:PrepareResources;Compile

Se você especificar quaisquer destinos usando essa opção, eles serão executados em vez de quaisquer destinos no atributo DefaultTargets no arquivo de projeto. Para obter mais informações, consulte de ordem de compilação de destino e Como: Especificar qual destino criar primeiro.

Um alvo é um grupo de tarefas. Para obter mais informações, consulte Targets.
-targets[:{file}]

-ts[:{file}]
Escreva a lista de destinos disponíveis no arquivo especificado (ou no dispositivo de saída, se nenhum arquivo for especificado), sem realmente executar o processo de compilação.
-toolsVersion:{version}

-tv:{version}
Especifica um conjunto de ferramentas personalizado. Um conjunto de ferramentas consiste em tarefas, destinos e ferramentas que são usados para criar um aplicativo. Consulte do conjunto de ferramentas (ToolsVersion) e Configurações padrão e personalizadas do conjunto de ferramentas.
-validate:[{schema}]

-val[{schema}]
Valide o arquivo de projeto e, se a validação for bem-sucedida, crie o projeto.

Se você não especificar schema, o projeto será validado em relação ao esquema padrão.

Se você especificar schema, o projeto será validado em relação ao esquema especificado.

A seguinte configuração é um exemplo: -validate:MyExtendedBuildSchema.xsd
-verbosity:{level}

-v:{level}
Especifica a quantidade de informações a serem exibidas no log de compilação. Cada registrador exibe eventos com base no nível de detalhamento definido para esse registrador.

Você pode especificar os seguintes níveis de verbosidade: q[uiet], m[inimal], n[ormal] (padrão), d[etailed]e diag[nostic].

A seguinte configuração é um exemplo: -verbosity:quiet
-version

-ver
Exiba apenas informações de versão. O projeto não está construído.
@{file} Insira opções de linha de comando de um arquivo de texto. Se você tiver vários arquivos, especifique-os separadamente. Para obter mais informações, consulte Arquivos de resposta.
-warnAsError[:{code; ...}]

-err[:{code; ...}]
Lista de códigos de aviso a tratar como erros. Use um ponto-e-vírgula ou uma vírgula para separar vários códigos de aviso. Para tratar todos os avisos como erros, use a opção sem valores. Quando um aviso é tratado como um erro, o destino continua a ser executado como se fosse um aviso, mas a compilação geral falha.

Exemplo: -err:MSB4130
-warnNotAsError[:{code; ...}]

-noerr[:{code; ...}]
MSBuild 17.0 e posterior. Lista de códigos de aviso que não devem ser promovidos a erros. Especificamente, se a opção warnAsError estiver definida para promover todos os avisos para erros, os códigos de erro especificados com warnNotAsError não serão promovidos. Isso não terá efeito se warnAsError não estiver definido para promover todos os avisos para erros. Use um ponto-e-vírgula ou uma vírgula para separar vários códigos de aviso.

Exemplo: -noerr:MSB4130
-warnAsMessage[:{code}; ...}]

-noWarn[:{code; ...}]
Lista de códigos de aviso para tratar como mensagens de baixa importância. Use um ponto-e-vírgula ou uma vírgula para separar vários códigos de aviso.

Exemplo: -noWarn:MSB3026

Comutadores para registadores

Mudar Descrição
-binaryLogger[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]

-bl[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]
Serializa todos os eventos de compilação para um arquivo binário compactado. Por padrão, o arquivo está no diretório atual e nomeado msbuild.binlog. O log binário é uma descrição detalhada do processo de compilação que pode ser usado posteriormente para reconstruir logs de texto e usado por outras ferramentas de análise. Um log binário é geralmente 10-20x menor do que o log de nível de diagnóstico de texto mais detalhado, mas contém mais informações.

O registrador binário por padrão coleta o texto de origem dos arquivos de projeto, incluindo todos os projetos importados e arquivos de destino encontrados durante a compilação. O parâmetro ProjectImports opcional controla esse comportamento:

- ProjectImports=Nenhum. Não colete as importações do projeto.
- ProjectImports=Incorporar. Incorporar importações de projeto no arquivo de log (padrão).
- ProjectImports=ZipFile. Salve arquivos de projeto em {output}.projectimports.zip onde <> de saída é o mesmo nome que o nome do arquivo de log binário.

A configuração padrão para ProjectImports é Embed.
Observação: o logger não coleta arquivos de origem não-MSBuild, como .cs, .cppe assim por diante.
Um arquivo de .binlog pode ser "reproduzido" passando-o para msbuild.exe como um argumento em vez de um projeto/solução. Outros registradores recebem as informações contidas no arquivo de log como se a compilação original estivesse acontecendo. Você pode ler mais sobre o log binário e seus usos em: https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md

Exemplos:
- -bl
- -bl:output.binlog
- -bl:output.binlog;ProjectImports=None
- -bl:output.binlog;ProjectImports=ZipFile
- -bl:..\..\custom.binlog
- -binaryLogger
-consoleLoggerParameters:{parameters}

-clp:{parameters}
Passe os parâmetros especificados para o registrador do console, que exibe as informações de compilação na janela do console. Você pode especificar os seguintes parâmetros:

- PerformanceSummary. Mostre o tempo gasto em tarefas, metas e projetos.
- Resumo. Mostre o resumo do erro e do aviso no final.
- NoSummary. Não mostre o resumo do erro e do aviso no final.
- ErrorsOnly. Mostrar apenas erros.
- AvisosApenas. Mostrar apenas avisos.
- NoItemAndPropertyList. Não mostre a lista de itens e propriedades que apareceriam no início de cada compilação de projeto se o nível de detalhamento estiver definido como diagnostic.
- ShowCommandLine. Mostrar TaskCommandLineEvent mensagens.
- ShowProjectFile. Mostrar o caminho para o arquivo de projeto em mensagens de diagnóstico. Essa configuração está ativada por padrão.
- ShowTimestamp. Mostrar o carimbo de data/hora como um prefixo para qualquer mensagem.
- ShowEventId. Mostre a ID do evento para cada evento iniciado, evento concluído e mensagem.
- ForceNoAlign. Não alinhe o texto ao tamanho do buffer do console.
- DisableConsoleColor. Use as cores padrão do console para todas as mensagens de log.
- DisableMPLogging. Desative o estilo de registro de saída do multiprocessador ao executar no modo não-multiprocessador.
- EnableMPLogging. Habilite o estilo de registro de multiprocessador mesmo quando executado no modo não-multiprocessador. Esse estilo de log está ativado por padrão.
- ForceConsoleColor. Use as cores do console ANSI, mesmo que o console não ofereça suporte a ele.
- Verbosidade. Substitua a configuração -verbosity para este registrador.

Use um ponto-e-vírgula para separar vários parâmetros, como mostra o exemplo a seguir:

-consoleLoggerParameters:PerformanceSummary;NoSummary -verbosity:minimal

O registrador de console padrão está na verbosidade normal e inclui um Summary.
-distributedFileLogger

-dfl
Registre a saída de compilação de cada nó MSBuild em seu próprio arquivo. O local inicial para esses arquivos é o diretório atual. Por padrão, os arquivos são nomeados MSBuild{NodeId}.log. Você pode usar a opção -fileLoggerParameters para especificar o local dos arquivos e outros parâmetros para o fileLogger.

Se você nomear um arquivo de log usando a opção -fileLoggerParameters, o registrador distribuído usará esse nome como um modelo e acrescentará a ID do nó a esse nome ao criar um arquivo de log para cada nó.
-distributedLogger:{central logger},{forwarding logger}, ...

-dl:{central logger},{forwarding logger, ...}
Registre eventos do MSBuild, anexando uma instância de logger diferente a cada nó. Para especificar vários loggers, especifique cada logger separadamente.

Você usa a sintaxe do logger para especificar um logger, exceto se você fornecer uma classe adicional para o registrador de encaminhamento. Para obter a sintaxe do logger, consulte a opção -logger.

Os exemplos a seguir mostram como usar essa opção:

-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-fileLogger[{number}]

-fl[{number}]
Registre a saída da compilação em um único arquivo no diretório atual. Se você não especificar number, o arquivo de saída será nomeado msbuild.log. Se você especificar number, o arquivo de saída será nomeado msbuild<n>.log, onde <n> é number. Number pode ser um dígito de 1 a 9.

Você pode usar a opção -fileLoggerParameters para especificar o local do arquivo e outros parâmetros para o fileLogger.
-fileLoggerParameters[{number}]:

parameters

-flp[{number}]: {parameters}
Especifica quaisquer parâmetros extras para o registrador de arquivos e o registrador de arquivos distribuídos. A presença deste interruptor implica que o interruptor -filelogger[number] correspondente está presente. Number pode ser um dígito de 1 a 9.

Você pode usar todos os parâmetros listados para -consoleloggerparameters. Você também pode usar um ou mais dos seguintes parâmetros:

- LogFile. O caminho para o arquivo de log no qual o log de compilação é gravado. O registrador de arquivos distribuídos prefixa esse caminho para os nomes de seus arquivos de log.
- Apêndice. Determina se o log de compilação é anexado ao arquivo de log ou o substitui. Quando você define o switch, o log de compilação é anexado ao arquivo de log. Quando o switch não está presente, o conteúdo de um arquivo de log existente é substituído.
Exemplo: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
Se você incluir uma configuração explícita de true ou false, o log será anexado independentemente da configuração. Se você não incluir a opção de acréscimo, o log será substituído.
Nesse caso, o arquivo é substituído: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
Neste caso, o arquivo é anexado: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true
Neste caso, o arquivo é anexado: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
- Codificação. Especifica a codificação para o arquivo (por exemplo, UTF-8, Unicode ou ASCII).

O exemplo a seguir gera arquivos de log separados para avisos e erros:

-flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly

Os exemplos a seguir mostram outras possibilidades:

-fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8

-flp:Summary;Verbosity=minimal;LogFile=msbuild.sum

-flp1:warningsonly;logfile=msbuild.wrn

-flp2:errorsonly;logfile=msbuild.err
-logger:logger

-l:logger
Especifica o registrador a ser usado para registrar eventos do MSBuild. Para especificar vários loggers, especifique cada logger separadamente.

Use a seguinte sintaxe para logger: [LoggerClass,]LoggerAssembly[;LoggerParameters]

Use a seguinte sintaxe para LoggerClass: [PartialOrFullNamespace.]LoggerClassName

Não é necessário especificar a classe do logger se o assembly contiver exatamente um logger.

Use a seguinte sintaxe para LoggerAssembly: AssemblyName[,StrongName] \| AssemblyFile

Os parâmetros do logger são opcionais e são passados para o logger exatamente como você os digita.

Os exemplos a seguir usam a opção -logger.

-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-noConsoleLogger

-noconlog
Desative o registrador de console padrão e não registre eventos no console.
-terminalLogger[:auto,on,off]

-tl[:auto,on,off]
Habilite ou desative o registrador de terminal. O registrador de terminais fornece uma saída de compilação aprimorada no console em tempo real, organizada logicamente por projeto e projetada para destacar informações acionáveis. Especifique auto (ou use a opção sem argumentos) para usar o registrador de terminal somente se a saída padrão não for redirecionada. Não analise a saída ou confie que ela permaneça inalterada em versões futuras. Esta opção está disponível no MSBuild 17.8 e posterior.

Exemplo

O exemplo a seguir cria o destino rebuild do MyProject.proj projeto.

MSBuild.exe MyProject.proj -t:rebuild

Ver também