MSBuild

Microsoft Build Engine es una plataforma para compilar aplicaciones.Este motor, que también se conoce como MSBuild, proporciona un esquema XML para un archivo de proyecto que controla cómo la plataforma de compilación procesa y compila el software.Visual Studio utiliza MSBuild, pero no depende de Visual Studio. Invocando msbuild.exe en el archivo de proyecto o de solución, puede orquestar y compilar productos en entornos donde no está instalado Visual Studio.

Visual Studio utiliza MSBuild para cargar y compilar proyectos administrados.Los archivos de proyecto en Visual Studio (.csproj, .vbproj, vcxproj, etc.) contienen código de MSBuild XML que se ejecuta cuando se compila un proyecto mediante el IDE de.Los proyectos de Visual Studio importan todos los valores y procesos de compilación necesarios para realizar el trabajo de desarrollo típico, pero puede extender o modificarlos dentro de Visual Studio o mediante un editor XML.

Los ejemplos siguientes se muestra cuando se ejecuta compilaciones mediante una línea de comandos de MSBuild en lugar del IDE de Visual Studio.

  • Visual Studio no está instalado.

  • Desea utilizar la versión de 64 bits de MSBuild.Esta versión de MSBuild normalmente es innecesaria, pero que MSBuild tiene acceso a más memoria.

  • Desea ejecutar una compilación en varios procesos.Sin embargo, puede utilizar el IDE para lograr el mismo resultado en proyectos de C++ y, a partir de Visual Studio 2012, C#.

  • Desea modificar el sistema de compilación.Por ejemplo, puede que desee habilitar las acciones siguientes:

    • Preprocese los archivos antes de alcanzar el compilador.

    • Copiar resultados de compilación en un lugar diferente.

    • Cree archivos comprimidos de resultados de la compilación.

    • Haga un paso de procesamiento posterior.Por ejemplo, puede ser conveniente a marca un ensamblado con una versión diferente.

Puede escribir código en el IDE de Visual Studio pero ejecutan compilaciones con MSBuild.Otra alternativa, puede compilar código en el IDE en un equipo de desarrollo pero usar una línea de comandos de MSBuild para compilar el código que está integrado de varios desarrolladores.

[!NOTA]

Puede utilizar Team Foundation Build automáticamente para compilar, probar y, para implementar la aplicación.El sistema de compilación puede automáticamente ejecutar compilaciones cuando en código comprobar los desarrolladores (por ejemplo, como parte de una estrategia de Integración Continua) o según una programación (por ejemplo, una prueba nocturna de comprobación de la compilación compilada).Team Foundation Build compila el código con MSBuild.Para obtener más información, vea Compilar la aplicación.

Este tema proporciona información general sobre MSBuild.Para obtener un tutorial de introducción, vea Tutorial: Usar MSBuild.

En este tema

  • Utilizar MSBuild en el símbolo del sistema

  • Archivo de proyecto

    • Propiedades

    • Items

    • Tareas

    • Destinos

  • Registros de compilación

  • Usar MSBuild en Visual Studio

  • Compatibilidad con múltiples versiones (multi-targeting)

Utilizar MSBuild en el símbolo del sistema

Para ejecutar MSBuild en el símbolo del sistema, se ha de pasar un archivo del proyecto a MSBuild.exe junto con las opciones de la línea de comandos adecuadas.Las opciones de la línea de comandos permiten establecer propiedades, ejecutar destinos concretos y establecer otras opciones que controlan el proceso de compilación.Por ejemplo, para compilar el archivo MyProj.proj con la propiedad Configuration establecida en Debug, se usaría la sintaxis de línea de comandos siguiente:

MSBuild.exe MyProj.proj /property:Configuration=Debug

Para obtener más información acerca de las opciones de la línea de comandos de MSBuild, vea Referencia de la línea de comandos de MSBuild

Nota de seguridadNota sobre la seguridad

Antes de descargar un proyecto, asegúrese de que su código es de confianza.

Archivo de proyecto

MSBuild utiliza un formato de archivo de proyecto XML- basado en que es sencillo y extensible.El formato de archivo del proyecto de MSBuild permite a los desarrolladores describir los elementos que se van a compilar, y también cómo se van a compilar en diferentes sistemas operativos y configuraciones.Además, el formato de archivo del proyecto permite a los desarrolladores crear reglas de compilación reutilizables que se pueden factorizar en archivos independientes para que las compilaciones de forma coherente en los distintos proyectos del producto.

Las secciones siguientes se describen algunos de los elementos básicos del formato de archivo de proyecto de MSBuild. Para obtener un tutorial sobre cómo crear un archivo de proyecto básico, vea Tutorial: Crear un archivo del proyecto de MSBuild desde el principio.

Dd393574.collapse_all(es-es,VS.110).gifPropiedades

Las propiedades representan pares clave/valor que se pueden utilizar para configurar compilaciones.Las propiedades se declaran creando un elemento que tenga el nombre de la propiedad como elemento secundario de un elemento PropertyGroup.Por ejemplo, el código siguiente crea una propiedad denominada BuildDir que tiene un valor de Build.

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

Puede definir una propiedad condicional colocando un atributo de Condition en el elemento.El contenido de los elementos condicionales se omite, a menos que la condición se evalúe como true.En el ejemplo siguiente, se define el elemento de Configuration si aún no se ha definido.

<Configuration  Condition=" '$(Configuration)' == '' ">Debug</Configuration>

Para hacer referencia a las propiedades en el archivo del proyecto, se usa la sintaxis %(nombreDePropiedad).Por ejemplo, puede hacer referencia a las propiedades en los ejemplos anteriores con $(BuildDir) y $(Configuration).

Para obtener más información sobre propiedades, vea Propiedades de MSBuild.

Dd393574.collapse_all(es-es,VS.110).gifItems

Los elementos son entradas del sistema de compilación y normalmente representan archivos.Se agrupan en tipos de acuerdo con los nombres de elemento definidos por el usuario.Estos tipos de elemento se pueden utilizar como parámetros para tareas, que utilizan los elementos individuales para llevar a cabo los pasos del proceso de compilación.

Los elementos se declaran en el archivo del proyecto mediante la creación de un elemento con el nombre del tipo de elemento como elemento secundario de un elemento ItemGroup.Por ejemplo, el código siguiente crea un tipo de elemento denominado Compile que incluye dos archivos.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

Para hacer referencia a los tipos de elemento en el archivo del proyecto, se usa la sintaxis @(tipoDeElemento).Por ejemplo, para hacer referencia al tipo de elemento del ejemplo, se usaría @(Compile).

En MSBuild, los nombres de elementos y atributos distinguen entre mayúsculas y minúsculas.Sin embargo, la propiedad, el elemento, y los nombres de los metadatos no.El ejemplo siguiente se crea el tipo de elemento Compile, comPile, o cualquier otra variación de caso, y asigna al tipo de elemento el valor “one.cs; two.cs”.

<ItemGroup>
  <Compile Include="one.cs" />
  <comPile Include="two.cs" />
</ItemGroup>

Los elementos se pueden declarar utilizando caracteres comodín y pueden contener metadatos adicionales para escenarios de compilación más avanzados.Para obtener más información sobre elementos, vea Elementos de MSBuild.

Dd393574.collapse_all(es-es,VS.110).gifTareas

Las tareas son unidades de código ejecutable que se utilizan en proyectos de MSBuild para realizar operaciones de compilación.Por ejemplo, una tarea podría compilar archivos de entrada o ejecutar una herramienta externa.Las tareas se pueden reutilizar y las pueden compartir desarrolladores diferentes en distintos proyectos.

La lógica de ejecución de una tarea se escribe en código administrado y se asigna a MSBuild usando el elemento UsingTask.Puede escribir una tarea creando un tipo administrado que implemente la interfaz ITask.Para obtener más información sobre cómo escribir tareas, vea Escribir tareas.

MSBuild incluye tareas comunes que se pueden modificar para satisfacer los requisitos.Los ejemplos son copiar, que copia archivos, MakeDir, que crea directorios, y Csc, que compila archivos de código fuente de Visual c#.Para obtener una lista de las tareas disponibles junto con información de uso, vea Referencia de tareas de MSBuild.

Para ejecutar una tarea en un archivo del proyecto de MSBuild, se crea un elemento con el nombre de la tarea como elemento secundario de un elemento Target.Las tareas aceptan normalmente parámetros, que se pasan como atributos del elemento.Tanto las propiedades como los elementos de MSBuild se pueden utilizar como parámetros.Por ejemplo, el código siguiente llama a la tarea MakeDir y le pasa el valor de la propiedad BuildDir que se declaró en el ejemplo anterior.

<Target Name="MakeBuildDirectory">
    <MakeDir  Directories="$(BuildDir)" />
</Target>

Para obtener más información acerca de las tareas, vea Tareas de MSBuild.

Dd393574.collapse_all(es-es,VS.110).gifDestinos

Los destinos agrupan tareas en un orden particular y exponen secciones del archivo de proyecto como puntos de entrada en el proceso de compilación.Los destinos suelen agruparse en secciones lógicas para aumentar la legibilidad y permitir la extensión.Dividir los pasos de compilación en destinos permite llamar a una parte del proceso de compilación desde otros destinos sin necesidad de copiar dicha sección de código en cada destino.Por ejemplo, si varios puntos de entrada en el proceso de compilación requieren que se compilen referencias, puede crear un destino que compile referencias y después ejecutar dicho destino de cada punto de entrada donde ha requerido.

Los destinos se declaran en el archivo del proyecto usando el elemento Target.Por ejemplo, en el código siguiente se crea un destino denominado Compile que, a continuación, llama a la tarea Csc que tiene la lista de elementos que se declaró en el ejemplo anterior.

<Target Name="Compile">
    <Csc Sources="@(Compile)" />
</Target>

En escenarios más avanzados, los destinos se pueden usar para describir relaciones entre sí y llevar a cabo análisis de dependencia se pueden omitir secciones completas del proceso de compilación si dicho destino está actualizado.Para obtener más información acerca de los destinos, vea Objetivos de MSBuild.

Registros de compilación

Puede registrar errores de compilación, advertencias, y mensajes en la consola o en otro dispositivo de salida.Para obtener más información, vea Obtener registros de compilación con MSBuild y Registro de MSBuild.

Usar MSBuild en Visual Studio

Visual Studio utiliza el formato de archivo de proyecto de MSBuild para almacenar información de compilación sobre proyectos administrados.Las configuraciones de proyecto que se agrega o modifica utilizando la interfaz de Visual Studio se reflejan en. archivo *proj que se genera para cada proyecto.Visual Studio utiliza una instancia hospedada de MSBuild para compilar proyectos administrados.Esto significa que un proyecto administrado puede ser Visual Studio integrado o en un símbolo del sistema (aunque Visual Studio no está instalado), y los resultados serán idénticos.

Para obtener un tutorial sobre cómo utilizar MSBuild en Visual Studio, vea Tutorial: Usar MSBuild.

Compatibilidad con múltiples versiones (multi-targeting)

Con Visual Studio, puede compilar una aplicación para que se ejecute en cualquiera de las versiones de .NET Framework.Por ejemplo, puede compilar una aplicación para ejecutarse en .NET Framework 2.0 en una plataforma de 32 bits, compilar la misma aplicación para ejecutarse en .NET Framework 4,5 en una plataforma de 64 bits.La capacidad de compilar para más de una versión de Framework se denomina multitargeting.

Éstas son algunas de las ventajas de la compatibilidad con múltiples versiones (multitargeting):

  • Puede desarrollar aplicaciones que tienen como destino versiones anteriores de .NET Framework, por ejemplo, las versiones 2.0, 3.0 y 3.5.

  • Puede marcos distintos de.NET Framework, por ejemplo, Silverlight de destino.

  • Puede tener como destino un perfil de Framework, que es un subconjunto predefinido de una versión de .NET Framework de destino.

  • Si un Service Pack para la versión actual de .NET Framework se libera, podría como destino.

  • Multitargeting garantiza que una aplicación utilice únicamente la funcionalidad disponible en el marco y la plataforma de destino.

Para obtener más información, vea Información general sobre compatibilidad con múltiples versiones (multi-targeting) de MSBuild.

Temas relacionados

Título

Descripción

Tutorial: Crear un archivo del proyecto de MSBuild desde el principio

Muestra la forma de crear un archivo básico del proyecto de forma incremental, utilizando solo un editor de texto.

Tutorial: Usar MSBuild

Presenta los bloques de compilación de MSBuild y muestra la forma de escribir, manipular, y depurar proyectos de MSBuild sin cerrar el IDE de Visual Studio.

Conceptos de MSBuild

Presenta los cuatro bloques de compilación de MSBuild: propiedades, elementos, destinos y tareas.

Elementos de MSBuild

Describe los conceptos generales en que se basa el formato de archivo de MSBuild y la manera de encajar las piezas.

Propiedades de MSBuild

Presenta las propiedades y las colecciones de propiedades.Las propiedades son pares clave/valor que se pueden utilizar para configurar compilaciones.

Objetivos de MSBuild

Explica cómo agrupar las tareas entre sí en un orden concreto y habilitar las secciones del proceso de compilación para que se las pueda llamar desde la línea de comandos.

Tareas de MSBuild

Muestra la forma de crear una unidad de código ejecutable que MSBuild puede usar para realizar operaciones de compilación indivisibles.

Condiciones de MSBuild

Explica la forma de utilizar el atributo Condition en un elemento de MSBuild.

Conceptos avanzados de MSBuild

Muestra el procesamiento por lotes, realizando transformaciones, multitargeting, y otras técnicas avanzadas.

Registro de MSBuild

Describe cómo registrar eventos de compilación, mensajes, y errores.

Otros recursos de MSBuild

Enumera los recursos de compatibilidad y comunidad para obtener más información sobre MSBuild.

Referencia