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.
El atributo ToolsVersion en el elemento Project de Visual Studio y los archivos de proyecto de MSBuild se considera obsoleto en Visual Studio 2019 y versiones posteriores; puede eliminarlo de forma segura. En este artículo se describe su uso en versiones anteriores de MSBuild o en conjuntos de herramientas personalizados. Vea Configuraciones de conjuntos de herramientas estándar y personalizados.
Puede cambiar el conjunto de herramientas para los proyectos y soluciones de tres maneras:
Con el modificador
-ToolsVersion(o-tv, para abreviar) cuando compile el proyecto o la solución desde la línea de comandos.Mediante el establecimiento del parámetro
ToolsVersionen la tarea de MSBuild.Mediante el establecimiento de la propiedad
$(ProjectToolsVersion)en un proyecto de una solución. Esto le permite compilar un proyecto en una solución con una versión del conjunto de herramientas que difiere de la de otros proyectos.
Invalidar la configuración de ToolsVersion de proyectos y soluciones en compilaciones de la línea de comandos
Aunque normalmente los proyectos de Visual Studio creados con ToolsVersion se especifican en el archivo del proyecto, puede usar el modificador -ToolsVersion (o -tv) en la línea de comandos para invalidar ese valor y compilar todos los proyectos y sus dependencias proyecto a proyecto con un conjunto de herramientas diferente. Por ejemplo:
msbuild.exe someproj.proj -tv:12.0 -p:Configuration=Debug
En este ejemplo, todos los proyectos se compilan con ToolsVersion 12.0. (En cambio, consulte la sección Orden de preferencia posteriormente en este tema).
Al usar el modificador -tv en la línea de comandos, puede usar opcionalmente la propiedad $(ProjectToolsVersion) en proyectos individuales para compilarlos con un valor de ToolsVersion diferente que el de los demás proyectos de la solución.
Invalidar la configuración de ToolsVersion con el parámetro ToolsVersion de la tarea de MSBuild
La tarea de MSBuild es el medio principal para que un proyecto compile otro. Para permitir que la tarea de MSBuild compile un proyecto con un ToolsVersion diferente que el especificado en el proyecto, proporciona un parámetro de tarea opcional denominado ToolsVersion. En el siguiente ejemplo se muestra cómo se usa este parámetro:
Cree un archivo denominado projectA.proj y que contenga el siguiente código:
<Project> <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>Cree otro archivo denominado projectB.proj y que contenga el siguiente código:
<Project> <Target Name="go"> <Message Text="projectB.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> </Target> </Project>En un símbolo del sistema, escriba el siguiente comando:
msbuild projectA.proj -t:go -toolsversion:3.5Aparece el siguiente resultado. Para
projectA, la configuración de-toolsversion:3.5en la línea de comandos invalida la configuración deToolsVersion=12.0en la etiquetaProject.Una tarea llama a
ProjectBenprojectA. Esa tarea tieneToolsVersion=2.0, que invalida las otras configuraciones deToolsVersionparaprojectB.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, del más alto al más bajo, que se usa para determinar ToolsVersion es:
El atributo
ToolsVersionen la tarea de MSBuild que se usa para compilar el proyecto, si existe.El modificador
-toolsversion(o-tv) que se usa en el comando msbuild.exe, si existe.Si se establece la variable de entorno
MSBUILDTREATALLTOOLSVERSIONSASCURRENT, después use elToolsVersionactual.Si se establece la variable de entorno
MSBUILDTREATHIGHERTOOLSVERSIONASCURRENTy elToolsVersiondefinido en el archivo del proyecto es mayor que elToolsVersionactual, use elToolsVersionactual.Si se establece la variable de entorno
MSBUILDLEGACYDEFAULTTOOLSVERSION, o siToolsVersionno se establece, entonces se usan los pasos siguientes:El atributo
ToolsVersiondel elemento Project del archivo del proyecto. Si el atributo no existe, se presupone que es la versión actual.La versión de las herramientas predeterminada en el archivo MSBuild.exe.config.
La versión de las herramientas predeterminada en el registro. Para más información, consulte Configuraciones de conjuntos de herramientas estándar y personalizados.
Si no se establece la variable de entorno
MSBUILDLEGACYDEFAULTTOOLSVERSION, entonces se usan los pasos siguientes:Si se establece la variable de entorno
MSBUILDDEFAULTTOOLSVERSIONen unToolsVersionque existe, úselo.Si
DefaultOverrideToolsVersionse establece en MSBuild.exe.config, úselo.Si
DefaultOverrideToolsVersionse establece en el registro, úselo.De otro modo, use el
ToolsVersionactual.