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.
Un conjunto de herramientas de MSBuild incluye un archivo 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 pueden usar para compilar aplicaciones en más de una versión de .NET Framework y más de una plataforma del sistema. Sin embargo, el conjunto de herramientas de MSBuild 2.0 se puede usar para tener como destino solo .NET Framework 2.0.
El atributo MSBuild 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 para conjuntos de herramientas personalizados. Consulte Configuraciones de conjunto de herramientas estándar y personalizados.
Atributo ToolsVersion
Especifique el conjunto de herramientas en el ToolsVersion atributo en el elemento Project del archivo del proyecto. En el ejemplo siguiente se especifica que el proyecto se debe compilar mediante el conjunto de herramientas "Current" de MSBuild.
<Project ToolsVersion="Current" ... </Project>
Nota:
Algunos tipos de proyecto usan el sdk atributo en lugar de ToolsVersion. Para obtener más información, vea Adiciones al formato csproj para .NET Core.
Funcionamiento del atributo ToolsVersion
Al crear 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 MSBuild que se incluye en la edición de Visual Studio. Para obtener más información, consulte Framework targeting overview.
Cuando se define un ToolsVersion valor en un archivo de proyecto, MSBuild usa ese valor para determinar los valores de las propiedades del conjunto de herramientas que están disponibles para el proyecto. Una propiedad Toolset es $(MSBuildToolsPath), que especifica la ruta de acceso de las herramientas de .NET Framework. Solo se requiere la propiedad Toolset (o $(MSBuildBinPath)).
A partir de Visual Studio 2013, la versión del conjunto de herramientas de MSBuild es la misma que el número de versión de Visual Studio. MSBuild tiene como valor predeterminado este conjunto de herramientas en Visual Studio y en la línea de comandos, independientemente de la versión del conjunto de herramientas especificada en el archivo de proyecto. Este comportamiento se puede invalidar mediante la marca -ToolsVersion. Para obtener más información, vea Invalidar la configuración de ToolsVersion.
En el ejemplo siguiente, MSBuild busca el archivo Microsoft.CSharp.targets mediante la MSBuildToolsPath propiedad reservada.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Puede modificar el valor de definiendo un conjunto de MSBuildToolsPath herramientas personalizado. Para obtener más información, consulte Configuraciones de conjuntos de herramientas estándar y personalizados.
Al compilar una solución en la línea de comandos y especificar un ToolsVersion para msbuild.exe, todos los proyectos y sus dependencias de proyecto a proyecto se compilan según ese ToolsVersion, incluso si cada proyecto de la solución especifica su propio ToolsVersion. Para definir el ToolsVersion valor por proyecto, consulte Invalidar la configuración de ToolsVersion.
El ToolsVersion atributo también se usa 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 después intenta abrir ese proyecto en Visual Studio 2008, no reconoce la actualización ToolsVersion y, por tanto, compila el proyecto como si el atributo todavía estuviera establecido en 3.5.
Visual Studio 2010 y Visual Studio 2012 usan ToolsVersion de 4.0. Visual Studio 2013 usa ToolsVersion de 12.0. Visual Studio 2015 usa ToolsVersion 14.0 y Visual Studio 2017 usa ToolsVersion 15.0. En muchos casos, puede abrir el proyecto en varias versiones de Visual Studio sin modificaciones. Visual Studio siempre usa el conjunto de herramientas correcto, pero se le notificará si la versión usada no coincide con la versión del archivo del proyecto. En casi todos los casos, esta advertencia es benigna, ya que los conjuntos de herramientas son compatibles en la mayoría de los casos.
Los subconjuntos de herramientas, que se describen más adelante en este tema, permiten que MSBuild cambie automáticamente el conjunto de herramientas que se va a usar en función del contexto en el que se ejecuta la compilación. Por ejemplo, MSBuild usa un conjunto más reciente de herramientas cuando se ejecuta en Visual Studio 2012 que cuando se ejecuta en Visual Studio 2010, sin tener que cambiar explícitamente el archivo de proyecto.
Implementación del conjunto de herramientas
Implemente un conjunto de herramientas seleccionando las rutas de acceso de las distintas herramientas, destinos y tareas que componen el conjunto de herramientas. Las herramientas del conjunto de herramientas que MSBuild define proceden de los orígenes siguientes:
Carpeta .NET Framework.
Herramientas administradas adicionales.
Las herramientas administradas incluyen ResGen.exe y TlbImp.exe.
MSBuild proporciona dos maneras de acceder al conjunto de herramientas:
Mediante el uso de propiedades del conjunto de herramientas
Mediante métodos ToolLocationHelper
Las propiedades del conjunto de herramientas especifican las rutas de acceso de las herramientas. A partir de Visual Studio 2017, MSBuild ya no tiene una ubicación fija. De forma predeterminada, se encuentra en la carpeta MSBuild\15.0\Bin relativa a la ubicación de instalación de Visual Studio. En versiones anteriores, MSBuild usa el valor del ToolsVersion atributo en el archivo de proyecto para buscar la clave del Registro correspondiente y, a continuación, usa la información de la clave del Registro para establecer las propiedades del conjunto de herramientas. Por ejemplo, si ToolsVersion tiene el valor 12.0, MSBuild establece las propiedades del conjunto de herramientas según esta clave del Registro: HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0.
Estas son propiedades del conjunto de herramientas:
MSBuildToolsPathespecifica la ruta de acceso de los archivos binarios de MSBuild.SDK40ToolsPathespecifica la ruta de acceso de herramientas administradas adicionales para MSBuild 4.x (que podría ser 4.0 o 4.5).SDK35ToolsPathespecifica 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 ToolLocationHelper clase . La clase incluye estos métodos:
GetPathToDotNetFramework devuelve la ruta de acceso de la carpeta de .NET Framework.
GetPathToDotNetFrameworkFile devuelve la ruta de acceso de un archivo en la carpeta .NET Framework.
GetPathToDotNetFrameworkSdk devuelve la ruta de acceso de la carpeta de herramientas administradas.
GetPathToDotNetFrameworkSdkFile devuelve la ruta de acceso de un archivo, que normalmente se encuentra en la carpeta de herramientas administradas.
GetPathToBuildTools devuelve la ruta de acceso de las herramientas de compilación.