Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 compilar un proyecto. También puede crear sus propios conjuntos de herramientas personalizados.
Nota
Recomendamos que lea Uso de MSBuild para especificar la versión de destino .NET Framework para entender mejor los conjuntos de herramientas, versiones de .NET Framework de destino 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 compilar en el escritorio del programador o en laboratorios de compilación.
Mediante los conjuntos de herramientas, puede hacer que MSBuild tenga como destino versiones específicas de .NET Framework. Esto significa que puede compilar un proyecto que funcione solo con Visual Studio 2008, y también puede compilar proyectos de Visual Studio 2005 en Visual Studio 2008.
Visual Studio 2008 incluye dos conjuntos de herramientas "estándar". Un conjunto de herramientas, que también se incluye con MSBuild 2.0 en Visual Studio 2005, tiene como destino .NET Framework 2.0. El otro conjunto de herramientas, que se incluye en MSBuild 3.5, puede tener como destino .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 el "nombre" de un conjunto de herramientas. Si no se especifica un valor para ToolsVersion en el proyecto, se usará un valor predeterminado. En MSBuild 3.5, el valor predeterminado de ToolsVersion se establece en 2.0. Esto significa que los proyectos que se compilen sin un valor explícito de ToolsVersion usarán el conjunto de herramientas 2.0 que se incluye con Visual Studio 2005. En Visual Studio 2010, los proyectos se compilan 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 compilar un proyecto que no especifica un conjunto de herramientas. Por ejemplo, el valor de DefaultToolsVersion para MSBuild en Visual Studio 2010 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, puede tener un escenario de laboratorio de compilación en el que necesite un sistema de compilación independiente para compilar proyectos de Visual C++. Mediante un conjunto de herramientas personalizado, puede asignar valores personalizados al atributo ToolsVersion cuando cree proyectos o ejecutar MSBuild.exe. De este modo, también podrá usar la propiedad $(MSBuildToolsPath) para importar los archivos .targets de ese directorio.
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.