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.
Um conjunto de ferramentas do MSBuild inclui um arquivo microsoft.common.tasks , um arquivo microsoft.common.targets e compiladores, como csc.exe e vbc.exe. A maioria dos conjuntos de ferramentas pode ser usada para compilar aplicativos em mais de uma versão do .NET Framework e mais de uma plataforma do sistema. No entanto, o Conjunto de Ferramentas do MSBuild 2.0 pode ser usado para direcionar apenas ao .NET Framework 2.0.
O atributo MSBuild 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. Consulte as configurações padrão e personalizadas do conjunto de ferramentas.
Atributo ToolsVersion
Especifique o Conjunto de Ferramentas no ToolsVersion atributo no elemento Project no arquivo de projeto. O exemplo a seguir especifica que o projeto deve ser criado usando o conjunto de ferramentas "Atual" do MSBuild.
<Project ToolsVersion="Current" ... </Project>
Observação
Alguns tipos de projeto usam o sdk atributo em vez de ToolsVersion. Para obter mais informações, consulte Adições ao formato csproj para .NET Core.
Como funciona o atributo ToolsVersion
Quando você cria um projeto no Visual Studio ou atualiza um projeto existente, um atributo nomeado ToolsVersion é incluído automaticamente no arquivo de projeto e seu valor corresponde à versão do MSBuild incluída na edição do Visual Studio. Para obter mais informações, confira Visão geral do direcionamento de estrutura.
Quando um ToolsVersion valor é definido em um arquivo de projeto, o MSBuild usa esse valor para determinar os valores das propriedades do Conjunto de Ferramentas que estão disponíveis para o projeto. Uma propriedade do Conjunto de Ferramentas é $(MSBuildToolsPath), que especifica o caminho das ferramentas do .NET Framework. Somente a propriedade Toolset (ou $(MSBuildBinPath)), é necessária.
A partir do Visual Studio 2013, a versão do Conjunto de Ferramentas do MSBuild é a mesma que o número de versão do Visual Studio. O MSBuild usa o padrão deste Conjunto de Ferramentas no Visual Studio e na linha de comando, independentemente da versão do Conjunto de Ferramentas especificada no arquivo de projeto. Esse comportamento pode ser substituído usando o sinalizador -ToolsVersion. Para obter mais informações, consulte Substituir as configurações de ToolsVersion.
No exemplo a seguir, o MSBuild localiza o arquivo Microsoft.CSharp.targets usando a MSBuildToolsPath propriedade reservada.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Você pode modificar o valor definindo um conjunto de MSBuildToolsPath ferramentas personalizado. Para obter mais informações, consulte as configurações padrão e personalizadas do Conjunto de Ferramentas.
Quando você cria uma solução na linha de comando e especifica um ToolsVersion para msbuild.exe, todos os projetos e suas dependências projeto a projeto são criados de acordo com isso, mesmo que ToolsVersioncada projeto na solução especifique sua própria ToolsVersion. Para definir o ToolsVersion valor por projeto, consulte As configurações de ToolsVersion de substituição.
O ToolsVersion atributo também é usado para migração de projeto. Por exemplo, se você abrir um projeto do Visual Studio 2008 no Visual Studio 2010, o arquivo de projeto será atualizado para incluir ToolsVersion="4.0". Se você tentar abrir esse projeto no Visual Studio 2008, ele não reconhecerá o atualizado ToolsVersion e, portanto, criará o projeto como se o atributo ainda estivesse definido como 3.5.
O Visual Studio 2010 e o Visual Studio 2012 usam uma ToolsVersion 4.0. O Visual Studio 2013 usa uma ToolsVersion de 12.0. O Visual Studio 2015 usa o ToolsVersion 14.0 e o Visual Studio 2017 usa o ToolsVersion 15.0. Em muitos casos, você pode abrir o projeto em várias versões do Visual Studio sem modificação. O Visual Studio sempre usa o conjunto de ferramentas correto, mas você será notificado se a versão usada não corresponder à versão no arquivo de projeto. Em quase todos os casos, esse aviso é benigno, pois os Conjuntos de Ferramentas são compatíveis na maioria dos casos.
Subconjuntos de ferramentas, descritos posteriormente neste tópico, permitem que o MSBuild alterne automaticamente qual conjunto de ferramentas usar com base no contexto no qual o build está sendo executado. Por exemplo, o MSBuild usa um conjunto mais recente de ferramentas quando é executado no Visual Studio 2012 do que quando é executado no Visual Studio 2010, sem a necessidade de alterar explicitamente o arquivo de projeto.
Implementação do conjunto de ferramentas
Implemente um Conjunto de Ferramentas selecionando os caminhos das várias ferramentas, destinos e tarefas que compõem o Conjunto de Ferramentas. As ferramentas no conjunto de ferramentas que o MSBuild define vêm das seguintes fontes:
A pasta .NET Framework.
Ferramentas gerenciadas adicionais.
As ferramentas gerenciadas incluem ResGen.exe e TlbImp.exe.
O MSBuild fornece duas maneiras de acessar o Conjunto de Ferramentas:
Usando propriedades do Conjunto de Ferramentas
ToolLocationHelper Usando métodos
As propriedades do conjunto de ferramentas especificam os caminhos das ferramentas. A partir do Visual Studio 2017, o MSBuild não tem mais um local fixo. Por padrão, ele está localizado na pasta MSBuild\15.0\Bin em relação ao local de instalação do Visual Studio. Em versões anteriores, o MSBuild usa o valor do ToolsVersion atributo no arquivo de projeto para localizar a chave do Registro correspondente e, em seguida, usa as informações na chave do Registro para definir as propriedades do Conjunto de Ferramentas. Por exemplo, se ToolsVersion tiver o valor 12.0, o MSBuild definirá as propriedades do Conjunto de Ferramentas de acordo com essa chave do Registro: HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0.
Estas são as propriedades do conjunto de ferramentas:
MSBuildToolsPathespecifica o caminho dos binários do MSBuild.SDK40ToolsPathespecifica o caminho de ferramentas gerenciadas adicionais para o MSBuild 4.x (que pode ser 4.0 ou 4.5).SDK35ToolsPathespecifica o caminho de ferramentas gerenciadas adicionais para o MSBuild 3.5.
Como alternativa, você pode determinar o Conjunto de Ferramentas programaticamente chamando os métodos da ToolLocationHelper classe. A classe inclui estes métodos:
GetPathToDotNetFramework retorna o caminho da pasta .NET Framework.
GetPathToDotNetFrameworkFile retorna o caminho de um arquivo na pasta .NET Framework.
GetPathToDotNetFrameworkSdk retorna o caminho da pasta de ferramentas gerenciadas.
GetPathToDotNetFrameworkSdkFile retorna o caminho de um arquivo, que normalmente está localizado na pasta de ferramentas gerenciadas.
GetPathToBuildTools retorna o caminho das ferramentas de build.