Substituindo configurações ToolsVersion
Você pode selecionar o conjunto de ferramentas para um arquivo de projeto usando a opção de /ToolsVersion (ou /tv, para breve) ou definindo a propriedade de $(ProjectToolsVersion) .Isso permite que você compilar um projeto em uma solução com uma versão do kit de ferramentas que seja diferente dos outros projetos.Você também pode substituir a versão de ferramenta usada por uma tarefa de MSBuild definindo o parâmetro de tarefa de ToolsVersion .
Substituir as configurações de ToolsVersion projetos em compilações de linha de comando
Embora projetos do Visual Studio criar normalmente com o ToolsVersion especificado no arquivo de projeto, você pode usar a opção de /ToolsVersion(ou, /tv) na linha de comando para substituir esse valor e para compilar todos os projetos e suas dependências de projeto-a-projeto com um conjunto de ferramentas diferente.Por exemplo:
msbuild.exe someproj.proj /tv:3.5 /p:Configuration=Debug
Nesse exemplo, todos os projetos são criados usando ToolsVersion 3,5.(No entanto, consulte a seção “ordem de precedência” posteriormente neste tópico.)
Ao usar a opção de /tv na linha de comando, você pode opcionalmente usar a propriedade de $(ProjectToolsVersion) em projetos individuais crie-os com um valor diferente de ToolsVersion dos outros projetos na solução.
Substituir as configurações de ToolsVersion usando o parâmetro de ToolsVersion de tarefas do MSBuild
A tarefa de MSBuild é significa principais para um projeto compila outro.Para ativar a tarefa de MSBuild compilar um projeto com um ToolsVersion diferente de aquele especificado no projeto, fornece um parâmetro opcional da tarefa chamado ToolsVersion.O exemplo a seguir demonstra como usar este parâmetro:
Crie um arquivo que são nomeados projectA.proj e que contém o código a seguir:
<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>
Crie outro arquivo que são nomeados projectB.proj e que contém o código a seguir:
<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>
Digite o seguinte comando em um prompt de comando:
msbuild projectA.proj /t:go /toolsversion:3.5
As seguintes saída aparecerá.Para projectA, /toolsversion:3.5 que define na linha de comando substitui ToolsVersion=4.0 que define na marca de Project .
ProjectB é chamado por uma tarefa em projectA.Essa tarefa tem ToolsVersion=2.0, que substitui as outras configurações 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
Ordem de precedência
A ordem de precedência, o mais alto para o menor, usado para determinar ToolsVersion usado por um projeto para criar é:
O atributo de ToolsVersion na tarefa de MSBuild usado para criar o projeto, se houver.
Alterne de /toolsversion (ou /tv) que é usado no comando msbuild.exe, se houver.
O atributo de ToolsVersion do elemento de Projeto do arquivo de projeto.
A versão das ferramentas de opção no arquivo de MSBuild.exe.config.
A opção faz uso de ferramentas a versão no Registro.Para obter mais informações, consulte Configurações padrão e personalizadas do Toolset.
Números 1, 2, e 3 são os mesmos propriedades:
As propriedades atributo na tarefa de MSBuild
/p: alterne em msbuild.exe
A marca de propriedade no arquivo de projeto
Consulte também
Conceitos
MSBuild Toolset (ToolsVersion)
Configurações padrão e personalizadas do Toolset