Trabalhando com Assemblies e o Cache Global de Assemblies

Se você pretende compartilhar um conjunto de módulos (assembly) entre vários aplicativos, você pode instalá-lo no cache global de assemblies. Cada computador onde o Common Language Runtime está instalado possui essa cache de código relativo a máquina. O Cache Global de Assemblies armazena assemblies especificamente designados para serem compartilhados por vários aplicativos no computador. Um conjunto de módulos (assembly) deve ter um nome forte a ser instalado na cache global de assemblies.

Observação

Conjuntos de Módulos (Assemblies) colocados no cache global de assemblies deve ter o mesmo nome do assembly e nome de arquivo (não incluindo a extensão de nome de arquivo).Por exemplo, um conjunto de módulos (assembly) com nome de myAssembly deve ter um nome de arquivo de myAssembly.exe ou myAssembly.dll.

Você deve compartilhar assemblies instalando-os na cache global de assemblies somente quando necessário. Como diretriz geral, mantenha as dependências de um assembly privadas, e localize assemblies no diretório de aplicativo a não ser que o compartilhamento de um assembly seja explicitamente necessário. Além disso, você não tem que instalar assemblies na cache global de assemblies para torná-los acessíveis para interoperabilidade COM ou código não gerenciado.

Há várias razões por que você desejaria instalar um conjunto de módulos (assembly) na cache global de assemblies:

  • Local Compartilhado.

    Conjuntos de módulos (assemblies) que devem ser usados por aplicativos podes ser colocados na cache global de assemblies. Por exemplo, se todos os aplicativos devem usar um conjunto de módulos (assembly) localizado na cache global de assemblies, uma instrução diretiva de versão pode ser adicionada para o arquivo Machine.config que redireciona referências para o assembly.

  • Segurança de Arquivo.

    Os administradores geralmente protegem o diretório raiz do sistema usando uma lista de controle de acesso (ACL) para controlar escrita e acesso de execução. Pelo fato de o cache global de assemblies estar instalado em um subdiretório do diretório raiz do sistema, ele herda o ACL dessa pasta. É recomendável que apenas os usuários com privilégios de administrador tenham permissão para excluir arquivos do cache global de assemblies.

  • Versão lado-a-lado

    Várias cópias de conjuntos de módulos (assemblies) com o mesmo nome mas informações de versões diferentes podem ser mantidas na cache global de assemblies.

  • Local de pesquisa adicional.

    O Common Language Runtime verifica um conjunto de módulos (assembly) para um assembly que coincide com a solicitação antes de procurar ou usar as informações da base de código em um arquivo de configuração.

Há situações em que você explicitamente não deseja instalar um assembly na cache global de assemblies. Se você colocar um dos assemblies que compõem um aplicativo na cache global de assemblies, você não pode mais duplicar ou instalar o aplicativo usando o comando xcopy para copiar o diretório do aplicativo. Nesse caso, você também deverá mover o assembly para a cache global de assemblies.

Nesta seção

Seções relacionadas