Compartir a través de


Referencia de la línea de comandos de MSBuild

Al usar MSBuild.exe para compilar un proyecto o un archivo de solución, puede incluir varios modificadores para especificar varios aspectos del proceso.

Cada modificador está disponible en dos formas: -switch y /switch. La documentación solo muestra el formulario -switch. Los modificadores no distinguen mayúsculas de minúsculas. Si ejecuta MSBuild desde un shell distinto del símbolo del sistema de Windows, es posible que las listas de argumentos a un modificador (separados por punto y coma o comas) necesiten comillas simples o dobles para asegurarse de que las listas se pasan a MSBuild en lugar de interpretarlas.

Los comandos de la CLI de .NET dotnet build, dotnet publish, dotnet msbuild y los comandos relacionados pasan estos modificadores a MSBuild, por lo que esta referencia es aplicable cuando se usan esos comandos; sin embargo, dotnet run no.

Sintaxis

MSBuild.exe [Switches] [ProjectFile]

Argumentos

Argumento Descripción
ProjectFile Compila los destinos en el archivo de proyecto que especifique. Si no especifica un archivo de proyecto, MSBuild busca en el directorio de trabajo actual una extensión de nombre de archivo que termina en proj y usa ese archivo. También puede especificar un archivo de solución de Visual Studio para este argumento.

Interruptores

La primera columna de la tabla siguiente muestra una forma larga y corta de cada modificador. Ambos formularios son equivalentes.

Corchetes [] indican partes opcionales y llaves {}indican valores proporcionados por el usuario.

Interruptor Descripción
-detailedSummary[:{True or False}]

-ds[:{True or False}]
Si True, muestre información detallada al final del registro de compilación sobre las configuraciones compiladas y cómo se programaron en los nodos.
-getItem:{itemName,...} Escriba el valor del elemento o los elementos después de la evaluación, sin ejecutar la compilación, o si se usa la opción -targets o la opción -getTargetResult, escriba los valores después de la compilación.
-getProperty:{propertyName,...} Escriba el valor de la propiedad o las propiedades después de la evaluación, sin ejecutar la compilación, o si se usa la opción -targets o la opción -getTargetResult, escriba los valores después de la compilación.
-getTargetResult:{targetName,...} Escriba los valores de salida de los destinos especificados.
-graphBuild[:{True or False}]

-graph[:{True or False}]
Hace que MSBuild construya y compile un grafo de proyecto. La construcción de un grafo implica identificar las referencias de proyecto a las dependencias de formulario. La compilación de ese grafo implica intentar compilar referencias de proyecto antes de los proyectos que hacen referencia a ellos, difierendo de la programación tradicional de MSBuild. Requiere MSBuild 16 o posterior.
-help

/? o -h
Mostrar información de uso. El siguiente comando es un ejemplo:

msbuild.exe -?
-ignoreProjectExtensions: {extensions}

-ignore: {extensions}
Omita las extensiones especificadas al determinar qué archivo de proyecto se va a compilar. Use un punto y coma o una coma para separar varias extensiones, como se muestra en el ejemplo siguiente:

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

-irc[:{cacheFile; ...}]
Lista separada por punto y coma de archivos de caché de entrada de los que MSBuild leerá los resultados de la compilación. Si -isolateProjects se establece en False, se establece en True.
-interactive[:{True or False}] Indica que las acciones de la compilación pueden interactuar con el usuario. No use este argumento en un escenario automatizado en el que no se espera interactividad. Especificar -interactive es el mismo que especificar -interactive:true. Use el parámetro para invalidar un valor procedente de un archivo de respuesta.
-isolateProjects[:{True, MessageUponIsolationViolation, False}]

-isolate[:{True, MessageUponIsolationViolation, False}]
Hace que MSBuild compile cada proyecto de forma aislada. Cuando se establece en MessageUponIsolationViolation (o su forma corta Message), solo se serializan los resultados de los destinos de nivel superior si se proporciona el modificador -outputResultsCache. Esta opción consiste en mitigar las posibilidades de que un destino de infracción de aislamiento en un proyecto de dependencia use un estado incorrecto debido a su dependencia en un destino almacenado en caché cuyos efectos secundarios no se tendrán en cuenta. (Por ejemplo, la definición de una propiedad). Este modo es más restrictivo, ya que requiere que el gráfico del proyecto se pueda detectar estáticamente en el momento de la evaluación, pero puede mejorar la programación y reducir la sobrecarga de memoria al crear un gran conjunto de proyectos.
-lowPriority[:{True or False}]

-low[:{True or False}]
Hace que MSBuild se ejecute con prioridad de proceso baja. Especificar -lowPriority es el mismo que especificar -lowPriority:True.
-maxCpuCount[:{number}]

-m[:{number}]
Especifica el número máximo de procesos simultáneos que se usarán al compilar. Si no incluye este modificador, el valor predeterminado es 1. Si incluye este modificador sin especificar un valor, MSBuild usa hasta el número de procesadores del equipo. Para obtener más información, vea Creación de varios proyectos en paralelo.

En el ejemplo siguiente se indica a MSBuild que compile con tres procesos de MSBuild, lo que permite que tres proyectos se compilen al mismo tiempo:

msbuild myproject.proj -maxcpucount:3
-noAutoResponse

-noautorsp
No incluya ningún archivo msBuild.rsp ni Directory.Build.rsp automáticamente.
-nodeReuse:{value}

-nr:{value}
Habilite o deshabilite la reutilización de nodos de MSBuild. Puede especificar los siguientes valores:

- True. Los nodos permanecen una vez finalizada la compilación para que las compilaciones posteriores puedan usarlas (valor predeterminado).
- False. Los nodos no permanecen después de que se complete la compilación.

Un nodo corresponde a un proyecto que se está ejecutando. Si incluye el modificador de -maxcpucount, varios nodos se pueden ejecutar simultáneamente.
-nologo No muestre el banner de inicio ni el mensaje de copyright.
-preprocess[:{filepath}]

-pp[:{filepath}]
Cree un único archivo de proyecto agregado mediante la inserción de todos los archivos que se importarían durante una compilación, con sus límites marcados. Puede usar este modificador para determinar más fácilmente qué archivos se importan, desde dónde se importan los archivos y qué archivos contribuyen a la compilación. Cuando se usa este modificador, el proyecto no se compila.

Si especifica un filepath, el archivo de proyecto agregado se genera en el archivo. De lo contrario, la salida aparece en la ventana de la consola.

Para obtener información sobre cómo usar el elemento Import para insertar un archivo de proyecto en otro archivo de proyecto, vea elemento Import (MSBuild) y Cómo: Usar el mismo destino en varios archivos de proyecto.
-outputResultsCache[:{cacheFile}]

-orc[:{cacheFile}]
Archivo de caché de salida donde MSBuild escribe el contenido de sus memorias caché de resultados de compilación al final de la compilación. Si -isolateProjects se establece en False, se establece en True.
profileEvaluation:{file} Perfiles de evaluación de MSBuild y escribe el resultado en el archivo especificado. Si la extensión del archivo especificado es '.md', el resultado se genera en formato Markdown. De lo contrario, se genera un archivo separado por tabulaciones.
-property:{name}={value}

-p:{name}={value}
Establezca o invalide las propiedades de nivel de proyecto especificadas, donde name es el nombre de propiedad y value es el valor de la propiedad. Especifique cada propiedad por separado o use un punto y coma o coma para separar varias propiedades, como se muestra en el ejemplo siguiente:

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

Consulte propiedades comunes del proyecto de MSBuild para obtener una lista de las propiedades más usadas. El conjunto completo de propiedades disponibles depende del tipo de proyecto, el SDK y los archivos importados.
-restore

-r
Ejecuta el destino Restore antes de compilar los destinos reales.
-restoreProperty:{name}={value}

-rp:{name}={value}
Establezca o invalide estas propiedades de nivel de proyecto solo durante la restauración y no use propiedades especificadas con el argumento -property. name es el nombre de propiedad y value es el valor de la propiedad. Use un punto y coma o una coma para separar varias propiedades o especificar cada propiedad por separado.
-target:{targets}

-t:{targets}
Compile los destinos especificados en el proyecto. Especifique cada destino por separado o use un punto y coma o coma para separar varios destinos, como se muestra en el ejemplo siguiente:

-target:PrepareResources;Compile

Si especifica destinos mediante este modificador, se ejecutan en lugar de cualquier destino del atributo DefaultTargets del archivo del proyecto. Para obtener más información, vea de orden de compilación de destino y Cómo: Especificar el destino que se va a compilar primero.

Un destino es un grupo de tareas. Para obtener más información, vea Targets.
-targets[:{file}]

-ts[:{file}]
Escriba la lista de destinos disponibles en el archivo especificado (o el dispositivo de salida, si no se especifica ningún archivo), sin ejecutar realmente el proceso de compilación.
-toolsVersion:{version}

-tv:{version}
Especifica un conjunto de herramientas personalizado. Un conjunto de herramientas consta de tareas, destinos y herramientas que se usan para compilar una aplicación. Consulte Toolset (ToolsVersion) y configuraciones de conjunto de herramientas estándar y personalizados.
-validate:[{schema}]

-val[{schema}]
Valide el archivo del proyecto y, si la validación se realiza correctamente, compile el proyecto.

Si no especifica schema, el proyecto se valida con el esquema predeterminado.

Si especifica schema, el proyecto se valida con el esquema que especifique.

El siguiente valor es un ejemplo: -validate:MyExtendedBuildSchema.xsd
-verbosity:{level}

-v:{level}
Especifica la cantidad de información que se va a mostrar en el registro de compilación. Cada registrador muestra eventos en función del nivel de detalle establecido para ese registrador.

Puede especificar los siguientes niveles de detalle: q[uiet], m[inimal], n[ormal] (valor predeterminado), d[etailed]y diag[nostic].

El siguiente valor es un ejemplo: -verbosity:quiet
-version

-ver
Mostrar solo la información de la versión. El proyecto no está compilado.
@{file} Insertar modificadores de línea de comandos desde un archivo de texto. Si tiene varios archivos, especifíquelos por separado. Para obtener más información, vea Archivos de respuesta.
-warnAsError[:{code; ...}]

-err[:{code; ...}]
Lista de códigos de advertencia que se tratan como errores. Use un punto y coma o una coma para separar varios códigos de advertencia. Para tratar todas las advertencias como errores, use el modificador sin valores. Cuando se trata una advertencia como un error, el destino continúa ejecutándose como si fuera una advertencia, pero se produce un error en la compilación general.

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

-noerr[:{code; ...}]
MSBuild 17.0 y versiones posteriores. Lista de códigos de advertencia que no se deben promover a errores. En concreto, si el modificador warnAsError está establecido para promover todas las advertencias a errores, los códigos de error especificados con warnNotAsError no se promueven. Esto no tiene ningún efecto si warnAsError no está establecido para promover todas las advertencias a errores. Use un punto y coma o una coma para separar varios códigos de advertencia.

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

-noWarn[:{code; ...}]
Lista de códigos de advertencia que se tratan como mensajes de importancia baja. Use un punto y coma o una coma para separar varios códigos de advertencia.

Ejemplo: -noWarn:MSB3026

Modificadores para registradores

Interruptor Descripción
-binaryLogger[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]

-bl[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]
Serializa todos los eventos de compilación en un archivo binario comprimido. De forma predeterminada, el archivo está en el directorio actual y se denomina msbuild.binlog. El registro binario es una descripción detallada del proceso de compilación que se puede usar más adelante para reconstruir los registros de texto y usar otras herramientas de análisis. Un registro binario suele ser de 10 a 20 veces menor que el registro de nivel de diagnóstico de texto más detallado, pero contiene más información.

El registrador binario recopila de forma predeterminada el texto de origen de los archivos de proyecto, incluidos todos los proyectos importados y los archivos de destino encontrados durante la compilación. El parámetro opcional ProjectImports controla este comportamiento:

- ProjectImports=None. No recopile las importaciones del proyecto.
- ProjectImports=Insertar. Insertar importaciones de proyecto en el archivo de registro (valor predeterminado).
- ProjectImports=ZipFile. Guarde los archivos de proyecto en {output}.projectimports.zip donde <> de salida es el mismo nombre que el nombre del archivo de registro binario.

La configuración predeterminada para ProjectImports es Insertar.
Nota: el registrador no recopila archivos de origen que no son de MSBuild, como .cs, .cpp, etc.
Un archivo .binlog se puede "reproducir" pasando a msbuild.exe como argumento en lugar de un proyecto o solución. Otros registradores reciben la información contenida en el archivo de registro como si se estuviera produciendo la compilación original. Puede obtener más información sobre el registro binario y sus usos en: https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md

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

-clp:{parameters}
Pase los parámetros que especifique al registrador de consola, que muestra información de compilación en la ventana de la consola. Puede especificar los parámetros siguientes:

- performanceSummary. Mostrar el tiempo dedicado a tareas, destinos y proyectos.
- Resumen. Muestra el resumen de errores y advertencias al final.
- noSummary. No muestre el resumen de errores y advertencias al final.
- ErrorsOnly. Mostrar solo errores.
advertencias de - Only. Mostrar solo advertencias.
- noItemAndPropertyList. No muestre la lista de elementos y propiedades que aparecerían al principio de cada compilación de proyecto si el nivel de detalle está establecido en diagnostic.
- showCommandLine. Mostrar mensajes TaskCommandLineEvent.
- showProjectFile. Mostrar la ruta de acceso al archivo del proyecto en los mensajes de diagnóstico. Esta configuración está activada de forma predeterminada.
- showTimestamp. Muestra la marca de tiempo como prefijo en cualquier mensaje.
- showEventId. Muestra el identificador de evento para cada evento iniciado, evento finalizado y mensaje.
- ForceNoAlign. No alinee el texto con el tamaño del búfer de la consola.
- DisableConsoleColor. Use los colores de la consola predeterminados para todos los mensajes de registro.
- disableMPLogging. Deshabilite el estilo de registro de varios procesadores de salida al ejecutarse en modo que no sea multiprocesador.
- enableMPLogging. Habilite el estilo de registro de varios procesadores incluso cuando se ejecute en modo que no sea multiprocesador. Este estilo de registro está activado de forma predeterminada.
- ForceConsoleColor. Use colores de la consola ANSI incluso si la consola no la admite.
- verbosity. Invalide la configuración de -verbosity para este registrador.

Use un punto y coma para separar varios parámetros, como se muestra en el ejemplo siguiente:

-consoleLoggerParameters:PerformanceSummary;NoSummary -verbosity:minimal

El registrador de consola predeterminado está en el nivel de detalle normal e incluye un Summary.
-distributedFileLogger

-dfl
Registre la salida de compilación de cada nodo de MSBuild en su propio archivo. La ubicación inicial de estos archivos es el directorio actual. De forma predeterminada, los archivos se denominan MSBuild{NodeId}.log. Puede usar el modificador -fileLoggerParameters para especificar la ubicación de los archivos y otros parámetros para fileLogger.

Si asigna un nombre a un archivo de registro mediante el modificador -fileLoggerParameters, el registrador distribuido usa ese nombre como plantilla y anexa el identificador de nodo a ese nombre al crear un archivo de registro para cada nodo.
-distributedLogger:{central logger},{forwarding logger}, ...

-dl:{central logger},{forwarding logger, ...}
Registre eventos de MSBuild y adjunte una instancia de registrador diferente a cada nodo. Para especificar varios registradores, especifique cada registrador por separado.

Use la sintaxis del registrador para especificar un registrador, salvo que proporcione y una clase adicional para el registrador de reenvío. Para obtener la sintaxis del registrador, consulte el modificador de -logger.

En los ejemplos siguientes se muestra cómo usar este modificador:

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

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

-fl[{number}]
Registre la salida de compilación en un único archivo del directorio actual. Si no especifica number, el archivo de salida se denomina msbuild.log. Si especifica number, el archivo de salida se denomina msbuild<n>.log, donde <n> es number. Number puede ser un dígito de 1 a 9.

Puede usar el modificador -fileLoggerParameters para especificar la ubicación del archivo y otros parámetros para fileLogger.
-fileLoggerParameters[{number}]:

parameters

-flp[{number}]: {parameters}
Especifica los parámetros adicionales para el registrador de archivos y el registrador de archivos distribuidos. La presencia de este conmutador implica que el modificador de -filelogger[number] correspondiente está presente. Number puede ser un dígito de 1 a 9.

Puede usar todos los parámetros enumerados para -consoleloggerparameters. También puede usar uno o varios de los parámetros siguientes:

- LogFile . Ruta de acceso al archivo de registro en el que se escribe el registro de compilación. El registrador de archivos distribuido prefijos esta ruta de acceso a los nombres de sus archivos de registro.
- Anexar. Determina si el registro de compilación se anexa al archivo de registro o lo sobrescribe. Al establecer el modificador, el registro de compilación se anexa al archivo de registro. Cuando el modificador no está presente, se sobrescribe el contenido de un archivo de registro existente.
Ejemplo: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
Si incluye una configuración explícita de true o false, el registro se anexa independientemente de la configuración. Si no incluye el modificador append, se sobrescribe el registro.
En este caso, el archivo se sobrescribe: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
En este caso, el archivo se anexa: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true
En este caso, el archivo se anexa: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
- codificación. Especifica la codificación para el archivo (por ejemplo, UTF-8, Unicode o ASCII).

En el ejemplo siguiente se generan archivos de registro independientes para advertencias y errores:

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

En los ejemplos siguientes se muestran otras posibilidades:

-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 el registrador que se va a usar para registrar eventos de MSBuild. Para especificar varios registradores, especifique cada registrador por separado.

Use la sintaxis siguiente para logger: [LoggerClass,]LoggerAssembly[;LoggerParameters]

Use la sintaxis siguiente para LoggerClass: [PartialOrFullNamespace.]LoggerClassName

No es necesario especificar la clase de registrador si el ensamblado contiene exactamente un registrador.

Use la sintaxis siguiente para LoggerAssembly: AssemblyName[,StrongName] \| AssemblyFile

Los parámetros del registrador son opcionales y se pasan al registrador exactamente al escribirlos.

En los ejemplos siguientes se usa el modificador -logger.

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

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

-noconlog
Deshabilite el registrador de consola predeterminado y no registre eventos en la consola.
-terminalLogger[:auto,on,off]

-tl[:auto,on,off]
Habilite o deshabilite el registrador de terminal . El registrador de terminal proporciona una salida de compilación mejorada en la consola en tiempo real, organizada lógicamente por proyecto y diseñada para resaltar información accionable. Especifique auto (o use la opción sin argumentos) para usar el registrador de terminal solo si no se redirige la salida estándar. No analice la salida o, de lo contrario, confíe en que permanece sin cambios en versiones futuras. Esta opción está disponible en MSBuild 17.8 y versiones posteriores.

Ejemplo

En el ejemplo siguiente se compila el destino rebuild del proyecto de de MyProject.proj.

MSBuild.exe MyProject.proj -t:rebuild

Consulte también