Resolvendo os Assemblies em tempo de Design

Há um equívoco comum para adicionar uma referência a um assembly através da guia .NET na caixa de diálogo adicionar referência a um assembly no cache global de assemblies (GAC).Isso não é o caso.A referência é realmente obter a um assembly intermediário de referência, isto é, um assembly que contém qualquer tipo e informações de assinatura, mas que não necessariamente contém nenhum código.As listas de tabulação .NET em assemblies que correspondem aos assemblies de tempo de execução no.NET Framework.Além disso, lista os assemblies de referência que correspondem aos assemblies de tempo de execução nas pastas registradas de \assemblyfoldersex\myassemblies]@=" usadas por terceiros.

Segmentação múltipla

O Visual Studio 2012 permite direcionar as versões do.NET Framework que executam na versão 2,0 de (CLR) do common language runtime ou na versão 4.Isso inclui, as versões 2,0, 3,0, 3,5, 4, e 4,5 e versões 1,0, 2,0, e 3,0 do Silverlight.Se uma nova versão do.NET Framework que é baseada na versão 2,0 CLR ou na versão 4 é laçada, Framework pode ser instalado usando um bloco de alvo, e automaticamente aparecerá como um destino no Visual Studio.

Como tipo resolução funciona

Em tempo de execução, o CLR resolve os tipos no assembly procurando no GAC, o diretório bin, e em todos os caminhos de pesquisa.Isso é tratado pelo carregador de fusão.Mas, como o carregador de fusão souber o que está procurando?Isso depende de uma resolução feita em tempo de design, quando o aplicativo é compilado.

Durante a compilação, os tipos de aplicativo do compilador resolve usando os assemblies de referência.Nas versões 2,0, 3,0, 3,5, 4, e 4,5 do.NET Framework, os assemblies de referência são instalados quando o.NET Framework é instalado.

No .NET Framework versão 4,5, os assemblies de referência são fornecidos pelo bloco alvo que vem com a versão correspondente do .NET Framework SDK.Próprio Framework fornece apenas os assemblies de tempo de execução.Para criar aplicativos, você precisa instalar o.NET Framework e o .NET Framework SDK correspondente.

Quando você seleciona o .NET Framework específico, o sistema de compilação resolver os tipos usando os assemblies de referência no bloco definido.Em tempo de execução, o carregador de fusão resolver esses mesmos tipos para assemblies de tempo de execução, que normalmente são posicionados no GAC.

Se os assemblies de referência não estão disponíveis, o sistema de compilação resolve tipos de assembly usando os assemblies de tempo de execução.Porque os assemblies de tempo de execução no GAC não são diferenciados por números de versão secundária, é possível que a resolução será feita para o assembly incorreto.Isso pode acontecer, por exemplo, se um novo método introduzido no .NET Framework versão 3,5 é referenciado ao utilizar a versão 3,0.A compilação funcionará com, e o aplicativo será executado no computador de compilação, mas falhará quando implantado em um computador que não tenha a versão 3,5 instalado.

O bloco alvo que agora com o.NET Framework SDK inclui uma lista de todos os assemblies de tempo de execução nessa versão do Framework, chamada a lista de redistribuição (redist).Isso torna impossível para que o sistema de compilação resolver tipos com a versão incorreta do assembly.

Consulte também

Outros recursos

MSBuild avançados conceitos