Usar la API de MSBuild

MSBuild proporciona una superficie de API pública para que el programa pueda realizar compilaciones e inspeccionar proyectos. Las versiones recientes de las API MSBuild se pueden encontrar en los paquetes NuGet siguientes:

Nombre del paquete Descripción
Microsoft.Build Contiene el ensamblado Microsoft.Build que se usa para crear, editar y evaluar proyectos de MSBuild.
Microsoft.Build.Framework Contiene el ensamblado de marco de MSBuild común que usan otros ensamblados de MSBuild.
Microsoft.Build.Runtime Proporciona una copia ejecutable completa de MSBuild. Haga referencia a este paquete solo si la aplicación necesita cargar proyectos o ejecutar compilaciones en proceso sin requerir la instalación de MSBuild. La evaluación correcta de los proyectos con este paquete requiere la agregación de componentes adicionales (como los compiladores) en un directorio de aplicación.
Microsoft.Build.Tasks.Core Contiene el ensamblado Microsoft.Build.Tasks que implementa las tareas de MSBuild que se usan habitualmente.
Microsoft.Build.Utilities.Core Contiene el ensamblado Microsoft.Build.Utilities que se usa para implementar tareas de MSBuild personalizadas.

Además, NuGet también hospeda un ensamblado heredado, Microsoft.Build.Engine, que está en desuso.

Hay varias versiones diferentes de la API MSBuild y, para las versiones 15 y 16, hay dos formatos distintos de los ensamblados en los paquetes NuGet, uno compilado con .NET Framework y otro con .NET Core, que es un subconjunto de la superficie de las API de .NET Framework. La versión de .NET Core de MSBuild se usa al invocar el comando dotnet y al utilizar MSBuild en sistemas Mac y Linux.

La documentación de la API MSBuild se puede encontrar mediante el explorador de API de .NET, o bien si se examinan los espacios de nombres de la lista siguiente.

Espacio de nombres Se aplica a Descripción
Microsoft.Build.Construction Todas Contiene tipos que el modelo de objetos de MSBuild usa para construir raíces del proyecto con valores no evaluados. Cada raíz del proyecto se corresponde a un archivo de proyecto o de destinos.
Microsoft.Build.Definition Todas Contiene la clase ProjectOptions, que admite la construcción de proyectos.
Microsoft.Build.Evaluation Todas Contiene tipos que el modelo de objetos de MSBuild usa para evaluar proyectos. Cada proyecto está asociado a una o más raíces del proyecto.
Microsoft.Build.Evaluation.Context Todas Contiene la clase EvaluationContext, que se usa para almacenar el estado de la evaluación entre llamadas.
Microsoft.Build.Exceptions Todas Contiene los tipos de excepción que se pueden iniciar durante el proceso de compilación.
Microsoft.Build.Execution Todas Contiene tipos que el modelo de objetos de MSBuild usa para compilar proyectos.
Microsoft.Build.Framework Todas Contiene los tipos que definen la forma en que las tareas y los registradores interactúan con el motor de MSBuild.
Microsoft.Build.Framework.Profiler Todas Contiene los tipos que admiten la generación de perfiles de rendimiento.
Microsoft.Build.Framework.XamlTypes Solo para .NET Framework Contiene clases que se usan para representar tipos XAML analizados desde archivos, reglas y otros orígenes.
Microsoft.Build.Globbing Todas Contiene clases que admiten el procesamiento de caracteres comodín.
Microsoft.Build.Globbing.Extensions Todas Contiene tipos que admiten extensiones para el procesamiento de caracteres comodín.
Microsoft.Build.Graph Todas Contiene tipos que admiten el modificador -graph de MSBuild.
Microsoft.Build.Logging Todas Contiene los tipos que se usan para registrar el progreso de una compilación.
Microsoft.Build.ObjectModelRemoting Todas Contiene tipos que admiten la comunicación remota en MSBuild.
Microsoft.Build.Tasks Todas Contiene la implementación de todas las tareas que se distribuyen con MSBuild.
Microsoft.Build.Tasks.Deployment.Bootstrapper Solo para .NET Framework Contiene clases que MSBuild usa de forma interna.
Microsoft.Build.Tasks.Deployment.ManifestUtilities Solo para .NET Framework Contiene clases que usa MSBuild.
Microsoft.Build.Tasks.Hosting Todas Contiene clases que MSBuild usa de forma interna.
Microsoft.Build.Tasks.Xaml Solo para .NET Framework Contiene clases relacionadas con las tareas de compilación de XAML.
Microsoft.Build.Utilities Todas Contiene clases auxiliares que puede usar para crear registradores y tareas de MSBuild propios.

En la tabla anterior, Todas en la columna Se aplica a significa que los tipos del espacio de nombres están disponibles en las versiones para .NET Framework y .NET Core de la API MSBuild.