Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 para mais de uma versão do .NET Framework e mais de uma plataforma de sistema. No entanto, o conjunto de ferramentas do MSBuild 2.0 pode ser usado para direcionar apenas o .NET Framework 2.0.
O atributo MSBuild ToolsVersion no elemento Project em arquivos de projeto do Visual Studio e 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 personalizadas. Consulte Configurações padrão e personalizada 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 MSBuild "Current" Toolset.
<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 atualizar um projeto existente, um atributo nomeado ToolsVersion é incluído automaticamente no arquivo de projeto e seu valor corresponde à versão do MSBuild que está incluída na edição do Visual Studio. Para obter mais informações, consulte a Visão geral sobre a definição de alvo do Framework.
Quando um ToolsVersion valor é definido em um arquivo de projeto, MSBuild usa esse valor para determinar os valores das propriedades do conjunto de ferramentas que estão disponíveis para o projeto. Uma propriedade Toolset é $(MSBuildToolsPath), que especifica o caminho das ferramentas do .NET Framework. Somente essa 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 assume como padrão esse 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 configurações de ToolsVersion.
No exemplo a seguir, o MSBuild localiza o arquivo Microsoft.CSharp.targets usando a MSBuildToolsPath propriedade reserved.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Você pode modificar o valor de definindo um conjunto de MSBuildToolsPath ferramentas personalizado. Para obter mais informações, consulte Configurações padrão e personalizada 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 de projeto para projeto são criados de acordo com isso, mesmo que ToolsVersioncada projeto na solução especifique seu próprio ToolsVersion. Para definir o ToolsVersion valor por projeto, consulte Substituindo configurações de ToolsVersion.
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 reconhece o atualizado ToolsVersion e, portanto, cria o projeto como se o atributo ainda estivesse definido como 3.5.
Visual Studio 2010 e Visual Studio 2012 usam um ToolsVersion de 4.0. Visual Studio 2013 usa um ToolsVersion de 12.0. O Visual Studio 2015 usa ToolsVersion 14.0 e o Visual Studio 2017 usa ToolsVersion 15.0. Em muitos casos, você pode abrir o projeto em várias versões do Visual Studio sem modificaçã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.
Os conjuntos de subferramentas, que são descritos posteriormente neste tópico, permitem que o MSBuild alterne automaticamente qual conjunto de ferramentas usar com base no contexto em que a compilação está sendo executada. 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 que você precise 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 as propriedades do conjunto de ferramentas
Utilizando ToolLocationHelper 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 ToolsVersion MSBuild usa o valor do 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 define as propriedades do conjunto de ferramentas de acordo com esta 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 ToolLocationHelper métodos da 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 Ferramentas Gerenciadas.
GetPathToDotNetFrameworkSdkFile Retorna o caminho de um arquivo, que normalmente está localizado na pasta Ferramentas Gerenciadas.
GetPathToBuildTools retorna o caminho das ferramentas de compilação.