Compartir a través de


Configuraciones de conjuntos de herramientas estándar y personalizados

Actualización: noviembre 2007

MSBuild 3.5 incluye dos conjuntos de herramientas predefinidos. Los conjuntos de herramientas son conjuntos de tareas, destinos y herramientas de la línea de comandos que puede utilizar para generar un proyecto. También puede crear sus propios conjuntos de herramientas personalizados.

Nota:

Recomendamos que lea Especificar versiones concretas de .NET Framework con MSBuild para entender mejor los conjuntos de herramientas, versiones de destino de .NET Framework y versiones de herramientas antes de continuar.

Tipos de conjuntos de herramientas

Cuando se define un conjunto de herramientas personalizado, también se define el valor del directorio al que $(MSBuildToolsPath) señala. Por consiguiente, puede utilizar $(MSBuildToolsPath) en un archivo de proyecto para importar las tareas y destinos en lugar de especificar los valores de los destinos y tareas en el archivo de proyecto. Esto permite definir globalmente los conjuntos de herramientas en el Registro o en un archivo de configuración para que pueda generar en el escritorio del programador o en laboratorios de compilación.

Con los conjuntos de herramientas, puede dirigir MSBuild a versiones de .NET Framework específicas del destino. Esto significa que puede generar un proyecto que sólo funciona con Visual Studio 2008, y también puede generar proyectos de Visual Studio 2005 en Visual Studio 2008.

Visual Studio 2008 incluye dos conjuntos de herramientas "estándar". Un conjunto de herramientas, también incluido en MSBuild 2.0 en Visual Studio 2005, especifica el destino .NET Framework 2.0. El otro conjunto de herramientas, incluido en MSBuild 3.5, puede especificar los destinos .NET Framework 2.0, .NET Framework 3.0 y .NET Framework 3.5.

Configuraciones del conjunto de herramientas estándar

MSBuild 3.5 incluye los siguientes conjuntos de herramientas estándar:

ToolsVersion

MSBuildToolsPath o MSBuildBinPath

2.0

< ruta de instalación de Windows>\Microsoft.Net\Framework\v2.0.50727\

3.5

<ruta de instalación de Windows>\Microsoft.NET\Framework\v3.5.20223\

Los conjuntos de herramientas estándar están disponibles en cualquier lugar del equipo donde se ejecute MSBuild.exe o se cree una instancia del motor de MSBuild, a menos que la información del conjunto de herramientas se invalide en el archivo MSBuild.exe.config o en un archivo de configuración específico del host.

El valor de ToolsVersion, que se especifica como atributo en la etiqueta Project del archivo de proyecto, determina qué conjunto de herramientas utilizará un proyecto generado por Visual Studio. Puede pensar en ToolsVersion como en el "nombre" de un conjunto de herramientas. Si no se especifica ToolsVersion en el proyecto, se utiliza un valor de ToolsVersion predeterminado. En MSBuild 3.5, el valor predeterminado de ToolsVersion es 2.0. Esto significa que los proyectos generados sin un valor explícito de ToolsVersion utilizarán el conjunto de herramientas 2.0 incluido con Visual Studio 2005. En Visual Studio 2008, los proyectos se generan automáticamente con un valor de ToolsVersion de 3.5. Debido a que utiliza este nuevo conjunto de herramientas, puede especificarse para las tres versiones de .NET Framework.

La información del conjunto de herramientas estándar se define en las siguientes claves del Registro:

Subárbol del Registro

Cadena (nombre de clave).

Cadena (valor de clave)

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\3.5\

DefaultToolsVersion

2.0

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\

ToolsPath

Ruta de instalación de .NET Framework 2.0

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.5\

ToolsPath

Ruta de instalación de .NET Framework 3.5

DefaultToolsVersion especifica qué conjunto de herramientas se utilizará para generar un proyecto que no especifica un conjunto de herramientas. Por ejemplo, el valor de DefaultToolsVersion para MSBuild en Visual Studio 2008 es 2.0. El valor de DefaultToolsVersion se puede invalidar en los archivos de configuración específicos del host. Los demás valores definen las rutas de instalación de las versiones de .NET Framework.

Nota:

Es recomendable no cambiar estos valores a menos que sea necesario. No obstante, puede agregar sus propios valores y especificar las definiciones del conjunto de herramientas personalizado para todos los equipos, como se describe en la sección siguiente.

Definiciones de conjuntos de herramientas personalizados

Cuando un conjunto de herramientas estándar no cumple sus requisitos de compilación, puede crear un conjunto de herramientas personalizado. Por ejemplo, podría tener un laboratorio de compilación en el que debe tener un sistema de compilación independiente para generar proyectos de Visual C++. Con un conjunto de herramientas personalizado, puede asignar valores personalizados al atributo ToolsVersion al crear los proyectos o ejecutar MSBuild.exe. Esto también le permite utilizar la propiedad $(MSBuildToolsPath) para importar archivos .targets de ese directorio. (Otra opción consiste en utilizar variables de entorno si no está interesado en definir un conjunto de herramientas independiente.)

Especifique su conjunto de herramientas personalizado en el archivo de configuración de MSBuild.exe (o para un host personalizado de MSBuild si tiene una herramienta independiente que hospeda el motor de MSBuild). Por ejemplo, el archivo de configuración de MSBuild.exe podría incluir la siguiente definición de conjunto de herramientas:

<msbuildToolsets default="3.0">
   <toolset toolsVersion="4.0">
      <property name="MSBuildToolsPath" 
        value="C:\Windows\Microsoft .NET\Framework\v3.0" />
   </toolset>
</msbuildToolsets>

<msbuildToolsets> es una sección de configuración de .NET personalizada que 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.Engine, Version=3.5.0.0, Culture=neutral, 
       PublicKeyToken=b03f5f7f11d50a3a"
   </section>
</configSections>
Nota:

Para leerse correctamente, configSections debe ser la primera etiqueta de la etiqueta de configuración.

ToolsetConfigurationSection es una sección de configuración personalizada que puede ser utilizada por cualquier host 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. Definiendo las entradas del Registro, puede especificar conjuntos de herramientas para todos los equipos que se aplican a MSBuild.exe, Visual Studio y todos los hosts de MSBuild.

Nota:

Si un archivo de configuración define los valores de una versión de herramientas ya definida en el Registro, las dos definiciones no se combinan. La definición del archivo de configuración tiene prioridad y los valores del Registro para esa versión de herramientas se omiten.

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

  • $(MSBuildBinPath): 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 del conjunto de herramientas. En el archivo de proyecto, se asigna a la propiedad $(MSBuildBinPath) y también a la propiedad $(MSBuildToolsPath).

  • $(MSBuildToolsPath): esta propiedad reservada es proporcionada por la propiedad MSBuildToolsPath especificada en el archivo de configuración. (Esta propiedad reemplaza a $(MSBuildBinPath). Sin embargo, $(MSBuildBinPath) se mantiene por motivos de compatibilidad.)

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. Estas propiedades personalizadas están disponibles para el archivo de proyecto con el mismo nombre que el valor especificado en el archivo de configuración.

Vea también

Conceptos

Conceptos avanzados de MSBuild