Compartilhar via


Definição do público-alvo específicos .NET Frameworks com MSBuild

Visual Studio 2008 e MSBuild 3.5 permitem destino várias versões dos .NET Framework (versões 2.0, 3.0 e 3.5) quando você cria ou construir projetos. Esse recurso é chamado de multiplataforma. In MSBuild, multiplataforma é realizada através de um novo atributo chamado ToolsVersion, nas Elemento do projeto (MSBuild).

Conjuntos de ferramentas, estruturas de destino e ToolsVersion

Para entender como MSBuild funciona com Visual Studio 2008, você precisa saber a diferença entre um conjunto de ferramentas e uma estrutura de destino e como cada um se relaciona com o novo atributo ToolsVersion. Eles são usados para determinar como MSBuild 3.5 traz seus projetos.

Conjunto de ferramentas

Um conjunto de ferramentas é um conjunto correspondente de MSBuild tarefas, MSBuild destinos e ferramentas que instala com MSBuild e o .NET Framework. Um conjunto de ferramentas inclui compiladores sistema autônomo csc.exe e vbc.exe, o arquivo de destinos comuns (microsoft.common.targets), e sistema autônomo tarefas comuns de arquivos (microsoft.common.tasks).O conjunto de ferramentas 3.5 pode ser usado com destino .NET Framework versões 2.0 e 3.0. O conjunto de ferramentas 2.0, no entanto, pode ser usado somente com destino .NET Framework versão 2.0.

Visual Studio 2008 Instala .NET Framework predefinidos de 3.5, que inclui dois conjuntos de ferramentas: um para .NET Framework 2,0 e outra para o .NET estrutura 3.5. Nenhum conjunto de ferramentas está definido para .NET Framework 3.0 que está incluído no Windows Vista. The .NET Framework 2,0 Conjunto de ferramentas pode direcionar somente .NET Framework 2,0, mas pode direcionar o conjunto de ferramentas do .NET estrutura 3.5 .NET Framework versões 2.0, 3.0 ou 3.5.

Você também pode criar seus próprios conjuntos de ferramentas personalizados.Para obter mais informações, consulte Padrão e configurações de conjunto de ferramentas personalizada.

estrutura de destino

Uma estrutura de destino é a versão específica do .NET Framework que o projeto foi criado para ser executado em. É necessário porque ele permite que o compilador de recursos que são exclusivo para essa versão do .NET Framework 2,0, ou referências a assemblies que são fornecidos apenas nessa versão do estrutura.

Atualmente, há três .NET Framework versões disponível para uso em Visual Studio 2008:

  • .NET Framework 2,0 (incluído no Visual Studio).

  • .NET Framework 3.0 (incluído no Windows Vista).

  • .NET Framework 3,5 (incluído no Visual Studio 2008).

Embora existam três diferentes .NET Framework versões, todas as versões são baseadas na mesma base common linguagem tempo de execução (CLR) versão 2.0 que foi incluído no Visual Studio 2005.

A versão do destino estrutura é especificada no arquivo de projeto por meio da propriedade TargetFrameworkVersion.Visual Studio define esse valor quando você alterna a versão do estrutura de destino no ambiente de desenvolvimento integrado (IDE). (Para obter mais informações, consulte Como: Destino de um específico .NET Framework.) Os valores possíveis para TargetFrameworkVersion são v2.0, v3.0 e v3.5. Ele é especificado sistema autônomo um MSBuild propriedade, tais sistema autônomo:

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>

Atributo ToolsVersion

A versão do conjunto de ferramentas pode ser especificada pelo atributo ToolsVersion sobre o Elemento do projeto (MSBuild) no arquivo de projeto. O exemplo a seguir indica que o projeto deve ser criado usando o .NET Framework 2,0 conjunto de ferramentas 2.0:

<Project ToolsVersion="2.0" ... </Project>

Quando você compilação uma solução ou projeto em linha de comando, especificando um ToolsVersion para mscompilação.exe faz com que todos os projetos e seu projeto - para - dependências do projeto seja construído according to que ToolsVersion even if cada projeto na solução especifica seu próprio ToolsVersion no seu Elemento do projeto (MSBuild).

Diferenças entre versões do .NET estrutura

Todas as três versões do .NET Framework com base na versão 2.0 do CLR. As versões do .NET Framework diferem entre si na lista de módulos (assemblies) que cada disponibiliza para você fazer referência a seus projetos. Por exemplo, LINQ é uma nova tecnologia que está incluída no Visual Studio 2008. .NET estrutura 3.5 é a única versão do .NET Framework assemblies de LINQ que possui. Portanto, não é possível usar LINQ, a menos que seu projeto .NET estrutura 3.5 se destina especificamente.Da mesma forma, o Windows Presentation Foundation (WPF) está incluído no Windows Vista. Não é possível aplicativos compilação WPF, a menos que seu projeto visa .NET estrutura 3.0 e versões posteriores do .NET Framework.

Para obter mais informações, consulte Padrão e configurações de conjunto de ferramentas personalizada.

Como projetos localizar conjuntos de ferramentas

Para criar um projeto Visual Studio 2008 requer um conjunto de ferramentas. MSBuild Localiza os destinos e tarefas usando o $(MSBuildToolsPath) propriedade. Por exemplo, o MSBuild localiza o arquivo Microsoft.CSharp.targets usando o seguinte elemento XML:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 

Microsoft.CSharp.targets é um exemplo de um processo de compilação específicas do linguagem usado pelo Visual Studio 2008 para construção Visual C# projetos. $(MSBuildToolsPath) resolvido como o caminho da versão apropriada das .NET Framework onde Microsoft.CSharp.targets está instalado (por exemplo, C:\Windows\Microsoft.Net\Framework\v2.0.50727).

Antes do MSBuild 3.5 Toolset pode compilação este projeto deve ser resolvido $(MSBuildToolsPath) o local de instalação do MSBuild 3.5 para que o conjunto de ferramentas importa o Visual Studio 2008 versão do Microsoft.CSharp.targets.

Dependendo do ToolsVersion, $(MSBuildToolsPath) obtém um valor diferente, fazendo com que ele importar um conjunto de ferramentas diferente com base no valor ToolsVersion. Este sistema flexível permite que o projeto MSBuild host ou o usuário especifique o conjunto de ferramentas que um projeto deve ser montado com e especifique também uma maneira para MSBuild Para usar as informações sobre o local e escolha o conjunto de ferramentas correto.

Como funciona o atributo ToolsVersion

Quando você cria um novo projeto ou atualizar um projeto existente em Visual Studio 2008, um atributo chamado ToolsVersion é automaticamente incluído no arquivo de projeto e definido como um valor padrão de "3.5". Para obter mais informações, consulte Direcionando-se a um .NET Framework Específico.

Quando um valor de ToolsVersion é definido em um arquivo de projeto, MSBuild utiliza para determinar os valores para $(MSBuildToolsPath) (ou $(MSBuildBinPath)), que é o caminho para o MSBuild ferramentas. Se um valor não for definido, de ToolsVersion MSBuild continua a usar o caminho antigo Toolset porque ele assume que o projeto é um Visual Studio 2005 projeto.

Se você em aberto um existente Visual Studio 2005 projeto em Visual Studio 2008, o projeto é fisicamente "atualizado" para incluir "ToolsVersion = 3,5", pois Visual Studio 2008 suporta apenas compilação ing com o conjunto de ferramentas de 3,5. sistema autônomo resultado, quando você compilação projeto na Visual Studio 2008, ele usará o Visual Studio 2008 Conjunto de ferramentas (3,5) em vez da Visual Studio Conjunto de ferramentas (2.0).

Projetos criados usando o conjunto de ferramentas 2.0 podem direcionar o .NET Framework 2,0, e projetos criados usando o conjunto de ferramentas 3.5 podem direcionar versões 2.0, 3.0 ou 3.5 das .NET Framework. Mesmo se um Visual Studio projeto foi migrado para Visual Studio 2008 e atualizado para usar o conjunto de ferramentas de 3,5, a estrutura de destino do projeto continuará a ser .NET Framework 2,0. Esse design garante que, ao migrar o projeto para Visual Studio 2008, não apresentará novas dependências. O projeto continua a compilação exatamente sistema autônomo no Visual Studio.

Observação:

Se ToolsVersion já está definido em um projeto Visual Studio 2008 não irá alterar seu valor. O valor de ToolsVersion pode ser substituído.Para obter mais informações, consulte Substituindo configurações ToolsVersion.

Compatibilidade do MSBuild 3.5 e o Visual Studio 2005

Visual Studio 2005 não é possível em aberto ou compilação Visual Studio 2008 projetos ou projetos atualizados para Visual Studio 2008. Mas o MSBuild conjunto de ferramentas 2.0 poderá criar sua Visual Studio 2008 projetos se você não usou nenhuma nova funcionalidade que é específica para Visual Studio 2008 Conjunto de ferramentas, sistema autônomo LINQ, novo Visual C# 2008 ou Visual Basic 2008 recursos de sintaxe e assim por diante.

Consulte também

Conceitos

Substituindo configurações ToolsVersion

Padrão e configurações de conjunto de ferramentas personalizada