Invalidar el valor de la versión de herramientas

Puede seleccionar el conjunto de herramientas para un archivo de proyecto utilizando el modificador /ToolsVersion (o /tv, para short) o estableciendo la propiedad de $(ProjectToolsVersion).Esto permite compilar un proyecto en una solución con una versión de Herramientas diferente de la de los demás proyectos.También puede invalidar la versión de la herramienta utilizada por una tarea de MSBuild estableciendo el parámetro de tarea ToolsVersion.

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 normalmente se compilan con la Versión 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 las dependencias de proyecto-a- proyecto con otro conjunto de herramientas.Por ejemplo:

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.El ejemplo siguiente se muestra cómo utilizar este parámetro:

  1. Cree un archivo denominado projectA.proj y que contenga el código siguiente:

    <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
    ToolsVersion="4.0">
    
        <Target Name="go" > 
            <Message Text="projectA.proj" />
            <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" />
            <Message Text="MSBuildToolsPath:    $(MSBuildToolsPath)" />
    
            <MSBuild Projects="projectB.proj"
                ToolsVersion="2.0"
                Targets="go" />
        </Target>
    </Project>
    
  2. Cree otro archivo que se denomina projectB.proj y que contenga el código siguiente:

    <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
    ToolsVersion="4.0">
    
        <Target Name="go">
            <Message Text="projectB.proj" />
            <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" />
            <Message Text="MSBuildToolsPath:    $(MSBuildToolsPath)" />
        </Target>
    </Project>
    
  3. Escriba el comando siguiente en un símbolo del sistema:

    msbuild projectA.proj /t:go /toolsversion:3.5
    
  4. El siguiente resultado aparece.Para projectA, /toolsversion:3.5 que establece en la línea de comandos reemplaza ToolsVersion=4.0 que establece en la etiqueta de Project.

    ProjectB llama una tarea en projectA.Esa tarea tiene ToolsVersion=2.0, que reemplaza los otros valores de ToolsVersion para projectB.

    Output:
      projectA.proj
      MSBuildToolsVersion: 3.5
      MSBuildToolsPath:    C:\Windows\Microsoft.NET\Framework\v3.5
    
      projectB.proj
      MSBuildToolsVersion: 2.0
      MSBuildToolsPath:    C:\Windows\Microsoft.NET\Framework\v2.0.50727
    

Orden de prioridad

El orden de prioridad, de mayor a menor, utilizado para determinar ToolsVersion utilizada para compilar un proyecto es:

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

  2. El modificador /toolsversion (o /tv) que se utiliza en el comando de msbuild.exe, si existe.

  3. El atributo de ToolsVersion de elemento de proyecto del archivo de proyecto.

  4. La versión de herramientas predeterminada del archivo de MSBuild.exe.config.

  5. Las versión de herramientas predeterminada del Registro.Para obtener más información, vea Configuraciones de conjuntos de herramientas estándar y personalizados.

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

Vea también

Conceptos

Conjunto de herramientas de MSBuild (ToolsVersion)

Configuraciones de conjuntos de herramientas estándar y personalizados

Otros recursos

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

Conceptos de MSBuild