Resolvendo os Assemblies em Horade Design
Há um equívoco comum que a adição de uma referência a um assembly por meio do.NET da caixa de diálogo Adicionar referência se refere a um assembly no Global Assembly Cache (GAC). Isso não é o caso. A referência realmente executada para um assembly de referência intermediários, isto é, um assembly que contém todas as informações de tipo e a assinatura, mas que não necessariamente contêm qualquer código. A.NET guia lista de assemblies de referência que correspondem aos conjuntos de runtime na.NET Framework. Além disso, ela lista os assemblies de referência que correspondem aos conjuntos de runtime nas pastas AssemblyFoldersEx registrados usados por terceiros.
Multiplataforma
Visual Studio 2010 permite a você direcionar as versões do.NET Framework que são executados em comuns Language Runtime (CLR) versão 2.0 ou versão 4. Isso inclui.NET Framework versões 2.0, 3.0, 3.5, 4 e versões do Silverlight 1.0, 2.0 e 3.0. Se um novo.NET Framework versão que se baseia na versão 2.0 do CLR ou versão 4 é lançada, a estrutura pode ser instalada usando um pacote de direcionamento e ele automaticamente aparecerá como um destino em Visual Studio. Para obter mais informações, consulte Multitargeting do MSBuild.
Como funciona a resolução de tipo
Em tempo de execução, o CLR resolve os tipos no assembly procurando no GAC, o diretório bin e em todos os caminhos probing. Isso é tratado pelo carregador do fusion. Mas, como o carregador fusion sabe o que está procurando? Isso depende de uma resolução feita em tempo de design, quando o aplicativo é compilado.
Durante a compilação, o compilador resolve os tipos de aplicativos usando o assemblies de referência. No.NET Framework versões 2.0, 3.0 e 3.5, os assemblies de referência são instalados quando o.NET Framework é instalado.
No.NET Framework versão 4, a referência a assemblies são fornecidos pelo pacote de direcionamento que acompanha a versão correspondente do.NET Framework SDK. A própria estrutura fornece os ambiente de execução assemblys. Para criar aplicativos, você precisa instalar ambos o.NET Framework e o correspondente.NET Framework SDK.
Quando você direcionar um específico.NET Framework, o sistema de compilação resolve todos os tipos usando os assemblies de referência no pacote de direcionamento. Em tempo de execução, o carregador fusion resolve esses mesmos tipos de conjuntos de runtime, que normalmente estão localizados no GAC.
Se os assemblies de referência não estiverem disponíveis, o sistema de compilação resolve tipos do assembly usando os assemblies de tempo de execução. Porque o tempo de execução assemblies no GAC não são diferenciados por números de versão secundária, é possível que a resolução será feita ao assembly errado. Isso pode acontecer, por exemplo, se um novo método introduzido na.NET Framework versão 3.5 é referenciado ao direcionamento versão 3.0. A compilação será bem sucedido e o aplicativo será executado na máquina de compilação, mas falhará quando implantado em uma máquina que não tem a versão 3.5 está instalado.
O pacote de direcionamento que agora é fornecido com o.NET Framework SDK inclui uma lista de todos os assemblies de tempo de execução nessa versão do Framework, denominada lista de redistribuição (redist). Isso torna impossível para o sistema de compilação resolver os tipos de versão incorreta do assembly.