Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O atributo ToolsVersion no elemento Project nos arquivos de projeto do Visual Studio e do MSBuild é considerado obsoleto no Visual Studio 2019 e posterior; você pode excluí-lo com segurança. Este artigo descreve seu uso em versões mais antigas do MSBuild ou para conjuntos de ferramentas personalizados. Confira Configurações padrão e personalizadas do Conjunto de ferramentas.
Você pode alterar o conjunto de ferramentas para projetos e soluções de uma destas três maneiras:
Usando a opção
-ToolsVersion(ou-tv, de forma abreviada) quando você compila o projeto ou solução por meio da linha de comando.Configurando o parâmetro
ToolsVersionna tarefa MSBuild.Configurando a propriedade
$(ProjectToolsVersion)em um projeto dentro de uma solução. Isso permite criar um projeto em uma solução com a versão do conjunto de ferramentas que difere daquela de outros projetos.
Substituir as configurações de ToolsVersion de projetos e soluções em builds da linha de comando
Embora os projetos do Visual Studio normalmente sejam compilados com o ToolsVersion especificado no arquivo de projeto, você pode usar a opção -ToolsVersion (ou -tv) na linha de comando para substituir esse valor e compilar todos os projetos e suas dependências de projeto para o projeto com um conjunto de ferramentas diferente. Por exemplo:
msbuild.exe someproj.proj -tv:12.0 -p:Configuration=Debug
Neste exemplo, todos os projetos são compilados usando ToolsVersion 12.0. (No entanto, consulte a seção Ordem de precedência posteriormente neste tópico).
Ao usar a opção -tv na linha de comando, você pode usar a propriedade $(ProjectToolsVersion) em projetos individuais para compilá-los com um valor de ToolsVersion diferente dos outros projetos na solução.
Substituir as configurações de ToolsVersion usando o parâmetro ToolsVersion da tarefa MSBuild
A tarefa do MSBuild é o principal meio para um projeto compilar outro. Para habilitar a tarefa do MSBuild para criar um projeto com um ToolsVersion diferente daquele especificado no projeto, ela fornece um parâmetro de tarefa opcional chamado ToolsVersion. O exemplo a seguir demonstra como usar esse parâmetro:
Crie um arquivo chamado projectA.proj que contém o código a seguir:
<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>Crie outro arquivo chamado projectB.proj que contém o código a seguir:
<Project> <Target Name="go"> <Message Text="projectB.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> </Target> </Project>Em um prompt de comando, digite o seguinte comando:
msbuild projectA.proj -t:go -toolsversion:3.5A saída a seguir aparece. Para
projectA, a configuração-toolsversion:3.5na linha de comando substitui a configuraçãoToolsVersion=12.0na marcaProject.ProjectBé chamado por uma tarefa emprojectA. Essa tarefa temToolsVersion=2.0, que substitui as outras configuraçõesToolsVersionparaprojectB.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
Ordem de precedência
A ordem de precedência, em ordem decrescente, usada para determinar a ToolsVersion é:
O atributo
ToolsVersionna tarefa MSBuild usado para compilar o projeto, se houver.A opção
-toolsversion(ou-tv) que é usado no comando msbuild.exe, se houver.Se a variável de ambiente
MSBUILDTREATALLTOOLSVERSIONSASCURRENTestiver definida, use oToolsVersionatual.Se a variável de ambiente
MSBUILDTREATHIGHERTOOLSVERSIONASCURRENTestiver definida e aToolsVersiondefinida no arquivo de projeto for maior que aToolsVersionatual, use aToolsVersionatual.Se a variável de ambiente
MSBUILDLEGACYDEFAULTTOOLSVERSIONestiver definida ou seToolsVersionnão estiver definida, as etapas a seguir serão usadas:O atributo
ToolsVersiondo elemento Project do arquivo de projeto. Se esse atributo não existir, será considerado que se trata da versão atual.A versão padrão das ferramentas no arquivo MSBuild.exe.config.
A versão das ferramentas padrão no Registro. Para saber mais, confira Configurações padrão e personalizadas do Conjunto de Ferramentas.
Se a variável de ambiente
MSBUILDLEGACYDEFAULTTOOLSVERSIONnão estiver definida, as etapas a seguir serão usadas:Se a variável de ambiente
MSBUILDDEFAULTTOOLSVERSIONestiver definida para umToolsVersionque existe, use-a.Se
DefaultOverrideToolsVersionestiver definida em MSBuild.exe.config, use-a.Se
DefaultOverrideToolsVersionestiver definida no Registro, use-a.Caso contrário, use a
ToolsVersionatual.