Compartilhar via


Multitargeting do MSBuild

Usando o Visual Studio, você pode compilar um aplicativo seja executado em qualquer uma das várias versões do.NET Framework. Por exemplo, você pode compilar um aplicativo em execução na.NET Framework versão 2.0 e compilar o mesmo aplicativo em execução na.NET Framework versão 4. A capacidade de compilar a mais de um framework é denominada multitargeting.

ObservaçãoObservação

Visual Studio é executado na versão mais atual do.NET Framework é instalado no computador de desenvolvimento.

Estes são alguns dos benefícios da multitargeting:

  • Você pode desenvolver aplicativos destinados a versões anteriores do.NET Framework, por exemplo, versões 2.0, 3.0 e 3.5.

  • Você pode direcionar estruturas diferente de.NET Framework, por exemplo, a estrutura do Silverlight.

  • Você pode direcionar um framework profile, que é um subconjunto predefinido de uma estrutura de destino.

  • Se quaisquer service packs para o.NET Framework versão 4 são lançados, pode direcioná-los.

  • Multitargeting garante que um aplicativo usa apenas a funcionalidade está disponível no framework de destino.

Um framework de destino é a versão específica da .NET Framework que seu projeto é construído para ser executado no. É necessário porque ele permite que os recursos do compilador são exclusivos para essa versão do .NET Framework 2.0, ou referências a assemblies que são incluídos somente na versão do Framework.

Quando você compila um aplicativo para o destino de uma estrutura específica, você deve coordenar esses três conjuntos de componentes de software:

  • Conjunto de ferramentas que contém os compiladores, tarefas e os destinos são usados para criar o aplicativo.

  • Assemblies de referência, que são usados para projetar e construir o aplicativo.

  • Assemblies de runtime, que são usados para executar o aplicativo.

Conjunto de ferramentas (ToolsVersion)

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 como CSC e Vbc. exe, o arquivo de destinos comuns (microsoft.common.targets), e as tarefas comuns de arquivo (microsoft.common.tasks). O conjunto de 4.0 ferramentas pode ser usado para o destino .NET Framework versões 2.0, 3.0, 3.5 e 4. O conjunto de 2.0 ferramentas, no entanto, só pode ser usado para o destino .NET Framework versão 2.0.

Você designa a ferramenta definir, definindo a ToolsVersion atributo da projeto o elemento de um arquivo de projeto, por exemplo,

<Project ToolsVersion="4.0" ...

Você pode usar a ferramenta de versão 4.0 definida para compilar aplicativos para serem executados em uma variedade de estruturas de destino, desde que um pacote de destino está instalado para cada estrutura de destino. Para obter mais informações, consulte "Pacotes de destino" neste tópico.

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

ObservaçãoObservação

Visual Studio não inclui uma interface de usuário para alterar o conjunto de ferramentas.

Assemblies de referência

Normalmente, frameworks associou assemblies de referência. Um assembly de referência é um assembly simplificado que não tem código e que expõe apenas os tipos públicos e membros.

Em tempo de design e o tempo de compilação, Visual Studio usa os assemblies de referência para o framework de destino como filtros para disponibilizar somente os tipos e membros que são compatíveis com essa estrutura. Por exemplo, quando você está direcionando o.NET Framework versão 3.5, tipos e membros que são fornecidos apenas pela.NET Framework versão 4 não são exibidos nos designers de Visual Studio como o .NET guia de Add Reference caixa de diálogo e não estão disponíveis para o processo de compilação.

Por exemplo, o LINQ é uma nova tecnologia que está incluída no Visual Studio 2008..NET Framework 3.5 é a única versão do .NET Framework com assemblies relacionadas a LINQ. Portanto, é possível usar o LINQ, a menos que seu projeto se destina especificamente.NET Framework 3.5 ou posterior. Da mesma forma, o Windows Presentation Foundation (WPF) está incluído no Windows Vista. Não é possível criar aplicativos WPF, a menos que seus alvos do projeto.NET Framework 3.0 ou versões posteriores da .NET Framework.

Pacotes de destino

Assemblies de referência são disponibilizados quando o pacote de destino correspondente está instalado. Um pacote de destino contém os assemblies de referência e um arquivo de FrameworkList.xml que lista-los. O arquivo de FrameworkList.xml também é conhecido como a lista de redistribuição (redist).

Os pacotes de destino estão disponíveis dessas origens:

  • Destino de pacotes para o.NET Framework versões 2.0, 3.0 e 3.5 estão incluídas na.NET Framework versão 3.5 SP1.

  • Destino de pacotes para o.Perfil de cliente do NET Framework versão 3.5, o.NET Framework versão 4 e o perfil de cliente 4 versão e o Silverlight estão incluídos em Visual Studio.

Normalmente, os pacotes de destino estão instalados na.. Pasta de \Reference Assemblies\Microsoft\Framework\ do \Program files (x86). O pacote de destino para o.NET Framework versão 2.0 é normalmente instalado em.. Pasta de \Windows\Microsoft.NET\Framework\v2.0.50727\.

Quando você cria uma solução ou projeto na linha de comando, a especificação de um atributo de ToolsVersion para MSBuild. exe faz todos os projetos e suas dependências de projeto para o projeto a ser criados de acordo com essa versão de ferramentas, mesmo se cada projeto na solução especifica seu próprio atributo ToolsVersion no seu Elemento do projeto (MSBuild).

Assemblies de tempo de execução

Não é possível definir uma estrutura de destino em Visual Studio, a menos que o pacote de destino para dessa estrutura é instalado. Por exemplo, para o destino do.NET Framework versão 3.0, seus assemblies de referência e os assemblies compatíveis devem estar instalados. Em tempo de execução, o carregador de fusão de runtime (CLR) de idioma comum vincula o aplicativo para os runtime, assemblies do framework que ele se destina.

A seleção de uma estrutura de destino

Para selecionar uma estrutura de destino para um projeto existente

  1. Em Solution Explorer, o botão direito do mouse no nó do projeto e, em seguida, clique em Propriedades.

  2. No aplicativo guia na Estrutura de destino , selecione uma estrutura. Somente os frameworks tem instalado um pacote de destino são exibidos nesta lista.

    Visual Studio usa a sua seleção para definir os valores desses três elementos no arquivo de projeto:

    • O TargetFrameworkIdentifier a estrutura de destino, por exemplo, nomes de elemento

      <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>

      Se esse elemento estiver ausente, seu valor padrão é ".NETFramework".

    • O TargetFrameworkVersion a versão do framework de destino, por exemplo, nomes de elemento

      <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>

    • O TargetFrameworkProfile nomes de elementos da estrutura de destino perfil como, por exemplo,

      <TargetFrameworkProfile>Client</TargetFrameworkVersion>

      Se esse elemento estiver faltando, destina-se a estrutura completa.

    Esses três elementos são combinados com os destinos comuns do sistema de compilação Visual Studio para formar um identificador conhecido como o moniker do framework de destino (TFM).

Cenário: Destinos de Visual Studio a.NET Framework versão 3.5

Presumir que o Visual Studio está sendo executado sob o.NET Framework versão 4. Destino do.NET Framework versão 3.5, você deve ter os assemblies de referência associado e assemblies em tempo de execução instalados. Esses assemblies são incluídos na.NET Framework versão 3.5 SP1.

Nesse cenário, os designers de Visual Studio exibem apenas o que é filtrado pelo.NET Framework versão 3.5 referência, e quando você constrói um projeto, ele se baseia em relação a esses assemblies de referência. Quando você executar o projeto, ele é executado na.Assemblies de tempo de execução de versão 3.5 do NET Framework, que por sua vez é executado na versão 2.0 do CLR.

Quando você implanta o aplicativo para outro computador, ele deve ter o.NET Framework versão 3.5 está instalado. Você pode verificar a versão 3.5 no computador de destino e instalá-lo, se necessário, usando um pacote de redistribuição adequado (redist).

Cenário dois: Visual Studio é executado na.NET Framework versão 4.1 e destinos de.NET Framework versão 4

Suponha que um.NET Framework versão 4.1 se torna disponível e que executam a versão 4 e versão 4.1 tanto em versão 4 do CLR. Se o.NET Framework versão 4.1 é instalado, Visual Studio seria executado automaticamente sob ele.

Para um projeto que se destina a.NET Framework versão 4, a versão 4 assemblies de referência poderiam filtrar os tipos e membros que estão disponíveis nos designers de Visual Studio, o projeto deve ser elaborado contra esses assemblies de referência e o aplicativo resultante seria executado contra assemblies versão 4 do tempo de execução.

Consulte também

Conceitos

Resolvendo os Assemblies em Horade Design

Conceitos Avançado do MSBuild

Histórico de alterações

Date

History

Motivo

Agosto de 2010

Mesclado usando o MSBuild para versões específicas de destino do.NET Framework para este tópico.

Aprimoramento de informações.