Uso de MSBuild
MSBuild proporciona un formato XML bien definido y extensible para crear archivos de proyecto que describen completamente los elementos de proyecto que se van a compilar, compilar tareas y configuraciones de compilación.
Consideraciones generales de MSBuild
Los archivos de proyecto de MSBuild, por ejemplo, Visual C# .csproj y Visual Basic .vbproj contienen datos que se usan en tiempo de compilación, pero también pueden contener datos que se usan en tiempo de diseño. Los datos en tiempo de compilación se almacenan mediante primitivos de MSBuild, incluidos item Element (MSBuild) y Property Element (MSBuild). Los datos en tiempo de diseño, que son datos específicos del tipo de proyecto y los subtipos de proyecto relacionados, se almacenan en XML de forma libre reservado para él.
MSBuild no tiene compatibilidad nativa con objetos de configuración, pero proporciona atributos condicionales para especificar datos específicos de la configuración. Por ejemplo:
<OutputDir Condition="'$(Configuration)'=="release'">Bin\MyReleaseConfig</OutputDir>
Para obtener más información sobre los atributos condicionales, vea Construcciones condicionales.
Extensión de MSBuild para el tipo de proyecto
Las interfaces y LAS API de MSBuild están sujetas a cambios en versiones futuras de Visual Studio. Por lo tanto, es prudente usar las clases del marco de paquetes administrados (MPF) porque proporcionan protección de los cambios.
Managed Package Framework for Projects (MPFProj) proporciona clases auxiliares para crear y administrar un nuevo sistema de proyectos. Puede encontrar el código fuente y las instrucciones de compilación en MPF for Projects - Visual Studio 2013.
Las clases MPF específicas del proyecto son las siguientes:
Clase | Implementación |
---|---|
Microsoft.VisualStudio.Package.ProjectNode |
IVsProject3 IVsCfgProvider2 IPersistFileFormat IVsSolutionEvents |
Microsoft.VisualStudio.Package.ProjectFactory |
IVsProjectFactory |
Microsoft.VisualStudio.Package.HierarchyNode |
IVsHierarchy |
Microsoft.VisualStudio.Package.ProjectConfig |
IVsCfg IVsProjectCfg IVsBuildableProjectCfg IVsDebuggableProjectCfg |
Microsoft.VisualStudio.Package.SettingsPage |
IPropertyPageSite |
Microsoft.VisualStudio.Package.ProjectElement
La clase es un contenedor para los elementos de MSBuild.
Generadores de archivos únicos frente a tareas de MSBuild
Los generadores de archivos únicos solo son accesibles en tiempo de diseño, pero las tareas de MSBuild se pueden usar en tiempo de diseño y en tiempo de compilación. Por lo tanto, para obtener la máxima flexibilidad, use las tareas de MSBuild para transformar y generar código. Para obtener más información, consulte Herramientas personalizadas.