Sobre assemblies lado a lado

Um assembly lado a lado do Windows é descrito por manifestos. Um assembly lado a lado contém uma coleção de recursos — um grupo de DLLs, classes do Windows, servidores COM, bibliotecas de tipos ou interfaces — que são sempre fornecidos a aplicativos juntos. Eles são descritos no manifesto do assembly.

Normalmente, um assembly lado a lado é uma única DLL. Por exemplo, o assembly Microsoft COMCTL32 é uma única DLL com um manifesto, enquanto o assembly Microsoft Visual C++ bibliotecas em tempo de execução do sistema de desenvolvimento contém vários arquivos. Os manifestos contêm metadados que descrevem assemblies lado a lado e dependências de assembly lado a lado.

Assemblies lado a lado são usados pelo sistema operacional como unidades fundamentais de nomenclatura, associação, controle de versão, implantação e configuração. Cada assembly lado a lado tem uma identidade exclusiva. Um dos atributos da identidade do assembly é sua versão. Para obter mais informações, consulte Versões de assembly.

A partir do Windows XP, várias versões de assemblies lado a lado podem ser usadas por aplicativos em execução ao mesmo tempo. Os manifestos e o número de versão do assembly são usados pelo carregador para determinar a associação correta das versões do assembly aos aplicativos. Assemblies e manifestos lado a lado funcionam com aplicativos e o gerenciador lado a lado, conforme ilustrado na figura a seguir.

representação do assembly lado a lado típico

No exemplo anterior, Comctl32.DLL versão 6.0 e Comctl32.DLL versão 5.0 estão no cache de assembly lado a lado e estão disponíveis para aplicativos. Quando um aplicativo chama para carregar a DLL, o gerenciador lado a lado determina se o aplicativo tem uma dependência de versão descrita em um manifesto. Se não houver nenhum manifesto relevante, o sistema carregará a versão padrão do assembly. Para o Windows XP, a versão 5.0 do Comctl32.DLL é o padrão do sistema. Se o gerenciador lado a lado encontrar uma dependência da versão 6.0 declarada em um manifesto, essa versão será carregada para ser executada com o aplicativo.

Vários assemblies do sistema de chaves estão sendo disponibilizados da Microsoft como assemblies lado a lado. Para obter mais informações, consulte Assemblies lado a lado da Microsoft com suporte. Os desenvolvedores de aplicativos também podem criar seus próprios assemblies lado a lado. Para obter mais informações, consulte Diretrizes para criar assemblies lado a lado. Em muitos casos, é possível atualizar aplicativos existentes para usar assemblies lado a lado sem precisar alterar o código do aplicativo.

Os desenvolvedores são incentivados a usar assemblies lado a lado para criar aplicativos isolados e atualizar aplicativos existentes em aplicativos isolados pelos seguintes motivos:

  • Assemblies lado a lado reduzem a possibilidade de conflitos de versão de DLL.
  • O compartilhamento de assembly lado a lado permite que várias versões de assemblies COM ou Windows sejam executadas ao mesmo tempo.
  • Aplicativos e administradores podem atualizar a configuração do assembly em uma base de configuração global ou por aplicativo após a implantação. Por exemplo, um aplicativo pode ser atualizado para usar um assembly lado a lado que inclui uma atualização sem precisar reinstalar o aplicativo.