Invalidar el valor de la versión de herramientas

El modificador (o /tv abreviado) /ToolsVersion o la propiedad $(ProjectToolsVersion) se pueden utilizar para invalidar el valor de la versión de herramientas en el archivo de proyecto, lo que permite, por ejemplo, compilar un proyecto en una solución con una versión del conjunto de herramientas diferente de la de otros proyectos. También puede invalidar la versión de herramientas de la tarea de MSBuild mediante el parámetro de tarea ToolsVersion.

Para obtener más información acerca de la versión de herramientas, vea Uso de MSBuild para especificar la versión de destino .NET Framework.

Invalidar el valor de la versión de herramientas de los proyectos en compilaciones de la línea de comandos

Aunque los proyectos de Visual Studio 2008 normalmente se compilan con la versión de herramientas especificada en el archivo de proyecto, puede utilizar el modificador /ToolsVersion (o /tv) en la línea de comandos invalidar ese valor y compilar todos los proyectos y sus dependencias entre proyectos con un conjunto de herramientas diferente. Por ejemplo:

C:\windows\microsoft.net\framework\v3.5>msbuild.exe someproj.proj /tv:3.5 /p:Configuration=Debug

En este ejemplo, todos los proyectos se compilan con ToolsVersion 3.5. (No obstante, vea la sección "Orden de prioridad" más adelante en este tema.)

Cuando se utiliza el modificador /tv en la línea de comandos, también puede utilizar la propiedad $(ProjectToolsVersion) en proyectos individuales para compilarlos con un valor de versión de herramientas diferente de otros proyectos de la solución.

Invalidar el valor de la versión de herramientas mediante el parámetro ToolsVersion de la tarea MSBuild

La tarea MSBuild es el principal medio que tiene un proyecto para compilar otro. Para que la tarea MSBuild compile un proyecto con una versión de herramientas diferente de la especificada en el proyecto, dispone de un parámetro de tarea opcional denominado ToolsVersion. A continuación encontrará un ejemplo de su uso:

<MSBuild Projects="MyProject1" 
         Targets="Build" 
         Properties="Configuration=Debug" 
         ToolsVersion="2.0">
    <Output TaskParameter="TargetOutputs" ItemName="Outputs" /> 
</MSBuild>

Orden de prioridad

El orden de prioridad, de mayor o menor, utilizado para determinar la versión de herramientas utilizada para compilar un proyecto es:

  1. El atributo ToolsVersion de la tarea MSBuild utilizado para compilar el proyecto, si existe.

  2. El modificador /tv utilizado en msbuild.exe, si existe. (Similar a la tarea de msbuild exterior.)

  3. El atributo ToolsVersion del archivo de proyecto.

  4. La versión de herramientas predeterminada del archivo de configuración.

  5. Las versión de herramientas predeterminada del Registro.

Los números 1, 2 y 3 son iguales que las propiedades:

  • Atributos de propiedad de la tarea MSBuild

  • modificador /p: de msbuild.exe

  • Etiqueta de la propiedad en el archivo de proyecto

Si no especifica un valor para /ToolsVersion al compilar en la línea de comandos, las soluciones de Visual Studio 2005 se compilarán con un valor de ToolsVersion de "2.0" y las soluciones de Visual Studio 2008 se compilarán con un valor de ToolsVersion de "3.5".

Vea también

Otros recursos

MSBuild Concepts

Compilar para versiones específicas de .NET Framework