Compartilhar via


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:

  1. 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>
    
  2. 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>
    
  3. Digite o seguinte comando em um prompt de comando:

    msbuild projectA.proj /t:go /toolsversion:3.5
    
  4. 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 é:

  1. O atributo de ToolsVersion na tarefa de MSBuild usado para criar o projeto, se houver.

  2. Alterne de /toolsversion (ou /tv) que é usado no comando msbuild.exe, se houver.

  3. O atributo de ToolsVersion do elemento de Projeto do arquivo de projeto.

  4. A versão das ferramentas de opção no arquivo de MSBuild.exe.config.

  5. 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

Outros recursos

Visão geral do MSBuild Multitargeting

Conceitos do MSBuild