Share via


Creación de configuraciones personalizadas del conjunto de herramientas

Un conjunto de herramientas de MSBuild contiene referencias a tareas, destinos y herramientas que puede usar para compilar un proyecto de aplicación. MSBuild incluye un conjunto de herramientas estándar, pero también puede crear conjuntos de herramientas personalizados.

Configuraciones del conjunto de herramientas estándar

MSBuild contiene el conjunto de herramientas estándar Current que hace referencia a la versión actual de MSBuild, que se instala en la carpeta MSBuild\Current\Bin en el directorio de instalación de Visual Studio.

Definiciones de conjuntos de herramientas personalizados

Cuando un conjunto de herramientas estándar no cumple sus requisitos de compilación, puede crear un elemento Toolset personalizado. Por ejemplo, puede tener un escenario de laboratorio de compilación en el que necesite un sistema independiente para compilar proyectos de C++. Mediante un elemento Toolset personalizado, puede asignar valores personalizados al atributo ToolsVersion al ejecutar MSBuild.exe con el modificador de línea de comandos /toolsVersion. Si especifica el atributo ToolsVersion en el archivo de proyecto, se omite.

De este modo, también podrá usar la propiedad $(MSBuildToolsPath) para importar los archivos .targets de ese directorio, así como para definir sus propias propiedades de conjunto de herramientas personalizado que puede usar en cualquier proyecto que utilice ese conjunto de herramientas.

Especifique un conjunto de herramientas personalizado en el archivo de configuración de MSBuild.exe (o de la herramienta personalizada que hospeda el motor de MSBuild si eso es lo que está usando). Por ejemplo, el archivo de configuración de MSBuild.exe podría incluir la siguiente definición de Toolset si se quería definir un conjunto de herramientas denominado MyCustomToolset.

<msbuildToolsets default="MyCustomToolset">
   <toolset toolsVersion="MyCustomToolset">
      <property name="MSBuildToolsPath"
        value="C:\SpecialPath" />
   </toolset>
</msbuildToolsets>

<msbuildToolsets> también se debe definir en el archivo de configuración, de la siguiente manera.

<configSections>
   <section name="msbuildToolsets"
       type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
       Microsoft.Build, Version=15.1.0.0, Culture=neutral,
       PublicKeyToken=b03f5f7f11d50a3a">
   </section>
</configSections>

Nota

Para que se lea correctamente, <configSections> debe ser la primera subsección de la sección <configuration>.

ToolsetConfigurationSection es una sección de configuración personalizada que puede usar cualquier host de MSBuild para la configuración personalizada. Si utiliza un conjunto de herramientas personalizado, un host no tiene que hacer nada para inicializar el motor de compilación excepto proporcionar las entradas del archivo de configuración.

Las propiedades siguientes son específicas del valor de ToolsVersion que se usa en los proyectos:

  • $(MSBuildBinPath) se establece en el valor de ToolsPath especificado en el Registro o en el archivo de configuración donde se define ToolsVersion. El valor de $(MSBuildToolsPath) en el Registro o en el archivo de configuración especifica la ubicación de las tareas y los destinos básicos. En el archivo de proyecto, se asigna a la propiedad $(MSBuildBinPath) y también a la propiedad $(MSBuildToolsPath).

  • $(MSBuildToolsPath) es una propiedad reservada que proporciona la propiedad MSBuildToolsPath especificada en el archivo de configuración. (Esta propiedad reemplaza a $(MSBuildBinPath). Sin embargo, $(MSBuildBinPath) se mantiene por motivos de compatibilidad). Un conjunto de herramientas personalizado debe definir $(MSBuildToolsPath) o $(MSBuildBinPath) pero no ambos, a no ser que ambos tengan el mismo valor.

    También puede agregar propiedades personalizadas específicas de ToolsVersion al archivo de configuración con la misma sintaxis utilizada para agregar la propiedad MSBuildToolsPath. Para que estas propiedades personalizadas están disponibles para el archivo de proyecto, use el mismo nombre que el del valor especificado en el archivo de configuración. En el archivo de configuración se pueden definir conjuntos de herramientas, pero no subconjuntos de herramientas.