Manual de MSBuild para desarrolladores de WDK
En esta sección se presenta la terminología básica de MSBuild para desarrolladores de WDK, que están familiarizados con Build.exe y NMake.exe. En esta sección se muestra la construcción de proyectos de MSBuild sencillos.
Conceptos de Nmake relevantes para MSBuild
Si ha trabajado con Build.exe y versiones anteriores de WDK (antes de WDK 8), probablemente esté familiarizado con la terminología y los conceptos que NMake.exe usa.
- command : invoca una herramienta de línea de comandos.
- target : describe una secuencia con nombre de comandos.
- dependencia: describe un destino que depende de otros destinos.
- Nmake se invoca en un archivo make con uno o varios destinos especificados. A continuación, ejecuta todas las dependencias de forma recursiva y, a continuación, los comandos del destino.
- Los archivos Nmake pueden incluir otros archivos make para la sólida administración de la estructura de compilación.
- Nmake también admite la creación de variables con nombre que se sustituirán por parámetros de comandos.
- Nmake también admite variables automáticas asignadas por el propio Make.exe, por ejemplo, el nombre del directorio o la ruta de acceso actuales.
- Un destino nunca se ejecutará dos veces durante una sola compilación. Una vez ejecutado, se supone que un destino ha completado su trabajo y no se volverá a ejecutar, incluso si un destino posterior de la compilación depende de él.
Conceptos de MSBuild
La extensión de archivo MSBuild principal para proyectos de C++ es .vcxproj.
Los comandos ahora se denominan tareas y no son simplemente invocaciones de procesos de línea de comandos. En su lugar, las tareas son unidades de código ejecutable que MSBuild puede usar para realizar operaciones de compilación atómicas. Para obtener una lista completa de las tareas, consulte Tareas de MSBuild específicas de Visual C++.
MSBuild importa las tareas de sus ensamblados de Common Language Runtime (CLR) con el elemento UsingTask como se muestra en el ejemplo siguiente.
<UsingTask TaskName="TaskName" AssemblyName="AssemblyName" />
Los destinos agrupan las tareas en un orden determinado y permiten dividir el proceso de compilación en unidades más pequeñas.
Un PropertyGroup permite definir propiedades mediante un formato descriptivo para el usuario. En el ejemplo siguiente se muestra el formato PropertyGroup .
<PropertyGroup> <ProductVersion>9.0.30729</ProductVersion> </PropertyGroup>
Un elemento es una variante orientada a objetos de Property. Aunque el formato de propiedad es nombre/valor, el formato de elemento es nombre/objeto donde el objeto tiene varios atributos. Los elementos son matrices de objetos.
Se hace referencia a las propiedades con el formato $(project) mientras que a los elementos se hace referencia con el formato @(name).
Un ItemGroup es una colección de Elementos.
Un ItemGroups suele ser una lista de todos los archivos que se van a compilar. A continuación, la colección de archivos se pasa a una tarea mediante la notación @(itemname). Consulte Elementos de MSBuild para obtener más información sobre el uso de elementos.
MSBuild tiene una serie de propiedades integradas a las que también puede hacer referencia en un archivo de proyecto.
Para obtener más información sobre MSBuild y las tareas de compilación, consulte Conceptos de MSBuild y Referencia de MSBuild.