Share via


Criar uma configuração personalizada do Conjunto de Ferramentas

Um conjunto de ferramentas MSBuild contém referências a tarefas, destinos e ferramentas que você pode usar para criar um projeto de aplicativo. O MSBuild inclui um conjunto de ferramentas padrão, mas você também pode criar conjuntos de ferramentas personalizados.

Configurações do conjunto de ferramentas padrão

O MSBuild contém o conjunto de ferramentas padrão Current que faz referência à versão atual do MSBuild, que é instalada na pasta MSBuild\Current\Bin no diretório de instalação do Visual Studio.

Definições do conjunto de ferramentas personalizado

Quando um conjunto de ferramentas padrão não atender a seus requisitos de build, você poderá criar um Toolset personalizado. Por exemplo, você pode ter um cenário de laboratório de build no qual você deve ter um sistema separado para criar projetos C++. Usando um Toolset personalizado, você pode atribuir valores personalizados ao atributo ToolsVersion ao executar MSBuild.exe usando a opção de linha de comando /toolsVersion. Se você especificar o atributo ToolsVersion no arquivo de projeto, ele será ignorado.

Fazendo isso, você também pode usar a propriedade $(MSBuildToolsPath) para importar arquivos .targets do diretório, bem como definir suas próprias propriedades de Conjunto de Ferramentas personalizadas, as quais podem ser usadas para qualquer projeto que use esse Conjunto de Ferramentas.

Especifique um Conjunto de Ferramentas personalizado no arquivo de configuração de MSBuild.exe (ou da ferramenta personalizada que hospeda o mecanismo MSBuild, se for o seu caso). Por exemplo, o arquivo de configuração de MSBuild.exe pode incluir a definição de Toolset a seguir caso deseje definir um conjunto de ferramentas chamado MyCustomToolset.

<msbuildToolsets default="MyCustomToolset">
   <toolset toolsVersion="MyCustomToolset">
      <property name="MSBuildToolsPath"
        value="C:\SpecialPath" />
   </toolset>
</msbuildToolsets>

<msbuildToolsets> também deve ser definido no arquivo de configuração, da seguinte maneira.

<configSections>
   <section name="msbuildToolsets"
       type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
       Microsoft.Build, Version=15.1.0.0, Culture=neutral,
       PublicKeyToken=b03f5f7f11d50a3a">
   </section>
</configSections>

Observação

Para ser lido corretamente, <configSections> deve ser a primeira subseção na seção <configuration>.

ToolsetConfigurationSection é uma seção de configuração personalizada que pode ser usada por qualquer hose de MSBuild para configuração personalizada. Se você usar um conjunto de ferramentas personalizado, um host não precisará fazer nada para inicializar o mecanismo de build, exceto fornecer as entradas de arquivo de configuração.

As seguintes propriedades são específicas para o valor de ToolsVersion, que é usado em projetos:

  • $(MSBuildBinPath) é definido como o valor ToolsPath, que é especificado no Registro ou no arquivo de configuração em que o ToolsVersion é definido. A configuração $(MSBuildToolsPath) no Registro ou no arquivo de configuração especifica o local das principais tarefas e destinos. No arquivo de projeto, isso mapeia para a propriedade $(MSBuildBinPath) e também para a propriedade $(MSBuildToolsPath).

  • $(MSBuildToolsPath) é uma propriedade reservada que é fornecida pela propriedade MSBuildToolsPath especificada no arquivo de configuração. (Essa propriedade substitui $(MSBuildBinPath). No entanto, $(MSBuildBinPath) é encaminhado para compatibilidade.) Um Conjunto de Ferramentas personalizado deve definir $(MSBuildToolsPath) ou $(MSBuildBinPath), não ambos, a menos que os dois tenham o mesmo valor.

    Você também pode adicionar propriedades personalizadas, propriedades específicas do ToolsVersion para o arquivo de configuração usando a mesma sintaxe que você pode usar para adicionar a propriedade MSBuildToolsPath. Para disponibilizar essas propriedades personalizadas para o arquivo de projeto, use o mesmo nome como o nome do valor que é especificado no arquivo de configuração. Você pode definir Conjuntos de Ferramentas, mas não os subconjuntos de ferramentas no arquivo de configuração.