Compartir a través de


Conjunto de herramientas de MSBuild (ToolsVersion)

MSBuild utiliza un Conjunto de tareas, destinos de y herramientas de una compilación.Normalmente, MSBuild conjunto de herramientas incluye un archivo de microsoft.common.tasks, un archivo microsoft.common.targets, y compiladores como csc.exe y vbc.exe.La mayoría de los conjuntos de herramientas se puede utilizar para compilar aplicaciones a más de una versión de .NET Framework y a más de una plataforma del sistema.Sin embargo, MSBuild 2,0 Conjunto sólo se puede utilizar como destino .NET Framework 2.0.

Atributo ToolsVersion

Especifique el conjunto de herramientas en el atributo ToolsVersion en el elemento Proyecto en el archivo de proyecto.El ejemplo siguiente se especifica que el proyecto debe compilarse utilizando MSBuild 2,0 Conjunto.

<Project ToolsVersion="2.0" ... </Project>

Cómo funciona el atributo ToolsVersion

Cuando se crea un proyecto en Visual Studio, o actualizar un proyecto existente, un atributo denominado ToolsVersion se incluye automáticamente en el archivo de proyecto y su valor corresponde a la versión de .NET Framework que se incluye en Visual Studio.Para obtener más información, vea Elegir versión de destino o perfil de .NET Framework específico.

Cuando un valor ToolsVersion se define en un archivo de proyecto, MSBuild utiliza ese valor para determinar los valores de las propiedades del conjunto de herramientas que están disponibles para el proyecto.Una propiedad de conjunto de herramientas es $(MSBuildToolsPath), que especifica la ruta de acceso de las herramientas de .NET Framework.Se requiere la propiedad del conjunto de herramientas (o $(MSBuildBinPath)).

En el ejemplo siguiente, MSBuild busca el archivo Microsoft.CSharp.targets utilizando la propiedad reservada MSBuildToolsPath .

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Puede modificar el valor MSBuildToolsPath definiendo un conjunto de herramientas personalizado.Para obtener más información, vea Configuraciones de conjuntos de herramientas estándar y personalizados

Cuando se compila una solución en la línea de comandos y especifica ToolsVersion para msbuild.exe, todos los proyectos y las dependencias de proyecto-a- proyecto se compilan según ese ToolsVersion, aunque cada proyecto de la solución especifique su propio ToolsVersion.Para definir el valor ToolsVersion por la base del proyecto, vea Invalidar el valor de la versión de herramientas.

El atributo ToolsVersion también se utiliza para la migración del proyecto.Por ejemplo, si abre un proyecto de Visual Studio 2008 en Visual Studio 2010, el archivo de proyecto se actualiza para incluir ToolsVersion=” 4,0 ".Si se intenta abrir ese proyecto en Visual Studio 2008, no reconoce ToolsVersion actualizado y por consiguiente no compila el proyecto como si el atributo todavía se estableció en 3,5.

Visual Studio 2010 y Visual Studio 2012 utilizan una Versión de 4,0.En muchos casos, puede abrir en ambas versiones de Visual Studio sin modificaciones.

Los Sub- conjuntos de herramientas, que se describen más adelante en este tema, permiten que MSBuild automáticamente cambie que establecen de herramientas que se va a utilizar basándose en el contexto en el que se ejecuta la compilación.Por ejemplo, MSBuild utiliza un nuevo conjunto de herramientas cuando se ejecuta en Visual Studio 2012 que cuando se ejecuta en Visual Studio 2010, sin tener que explícitamente cambiar el archivo de proyecto.Para obtener más información, vea Cómo: Modifique una carga de los proyectos del sistema SO Del proyecto en varias versiones de Visual Studio.

Implementación de conjuntos de herramientas

Implemente un Conjunto seleccionando las rutas de las diferentes herramientas, destinos, y tareas que constituyen el conjunto de herramientas.Las herramientas del conjunto de herramientas que MSBuild define proceden de los orígenes siguientes:

  • La carpeta .NET Framework.

  • Herramientas administradas adicionales.

Inclusión administrada ResGen.exe y TlbImp.exe de las herramientas.

MSBuild proporciona dos maneras de tener acceso al conjunto de herramientas:

  • Mediante las propiedades del conjunto de herramientas

  • Mediante los métodos ToolLocationHelper

Las propiedades del conjunto de herramientas especifican las rutas de acceso de las herramientas.MSBuild utiliza el valor del atributo ToolsVersion en el archivo de proyecto para encontrar la clave del Registro correspondiente, y después utiliza la información de la clave del Registro para establecer las propiedades del conjunto de herramientas.Por ejemplo, si ToolsVersion tiene el valor 4,0, MSBuild establece las propiedades del conjunto de herramientas de esta clave del Registro: HKLM \Software\Microsoft\MSBuild\ToolsVersions \ 4,0.

Éstas son propiedades del conjunto de herramientas:

  • MSBuildToolsPath especifica la ruta de acceso de las herramientas de .NET Framework.

  • SDK40ToolsPath especifica la ruta de acceso de las herramientas administradas adicionales para MSBuild 4,0.

  • SDK35ToolsPath especifica la ruta de acceso de las herramientas administradas adicionales para MSBuild 3,5.

Como alternativa, puede determinar el conjunto de herramientas mediante programación llamando a los métodos de la clase ToolLocationHelper .La clase incluye estos métodos:

Bb383796.collapse_all(es-es,VS.110).gifSub- conjuntos de herramientas

Como se describe anteriormente en este tema, MSBuild utiliza una clave del Registro para especificar la ruta de acceso de las herramientas básicas.Si la clave tiene una subclave, MSBuild la utiliza para especificar la ruta de acceso de un sub- conjunto de herramientas que contiene otras herramientas.En este caso, el conjunto de herramientas es definido combinando las definiciones de propiedades que se definen en las dos claves.

[!NOTA]

Si hay un conflicto entre los nombres de propiedad del conjunto de herramientas, el valor definido para la ruta de la subclave invalida el valor definido para la ruta de la clave principal.

Los Sub- conjuntos de herramientas pasan a ser activo en presencia de la propiedad de compilación VisualStudioVersion .Esta propiedad puede tener uno de estos valores:

  • “10,0” especifica el sub- conjunto de herramientas de .NET Framework 4

  • “11,0” especifica el sub- conjunto de herramientas de .NET Framework 4,5

Durante una compilación, MSBuild determina automáticamente y establece un valor predeterminado para la propiedad VisualStudioVersion si no se ha definido.

MSBuild proporciona las sobrecargas de los métodos ToolLocationHelper que agregan un valor enumerado VisualStudioVersion como parámetro.Además, MSBuild proporciona estos nuevos métodos para devolver las rutas de herramientas nativas adicionales:

  • GetPathToWindowsSdk

  • GetPathToWindowsSdkFile

Estos nuevos métodos toman también un valor enumerado VisualStudioVersion como parámetro para determinar que sub- conjunto de herramientas a utilizar.La enumeración VisualStudioVersion puede tener uno de los siguientes valores:

  • VisualStudio10

  • VisualStudio11

  • VisualStudioLatest

Los Sub- conjuntos de herramientas se introdujeron en .NET Framework 4,5.

Vea también

Conceptos

Configuraciones de conjuntos de herramientas estándar y personalizados

Otros recursos

Información general sobre compatibilidad con múltiples versiones (multi-targeting) de MSBuild