Partilhar via


Trabalhando com assemblies e o cache de assembly global

Nota

Este artigo é específico do .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.

Se você pretende compartilhar um assembly entre vários aplicativos, você pode instalá-lo no cache de assembly global. Cada computador onde o common language runtime está instalado tem esse cache de código em toda a máquina. O cache de assembly global armazena assemblies especificamente designados para serem compartilhados por vários aplicativos no computador. Um assembly deve ter um nome forte para ser instalado no cache de assembly global.

Nota

Os assemblies colocados no cache de assembly global devem ter o mesmo nome de assembly e nome de arquivo (não incluindo a extensão de nome de arquivo). Por exemplo, um assembly com o nome de assembly de myAssembly deve ter um nome de arquivo de myAssembly.exe ou myAssembly.dll.

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

Há várias razões pelas quais você pode querer instalar um assembly no cache de assembly global:

  • Localização partilhada.

    Os assemblies que devem ser usados pelos aplicativos podem ser colocados no cache global de assemblies. Por exemplo, se todos os aplicativos devem usar um assembly localizado no cache de assembly global, uma instrução de política de versão pode ser adicionada ao arquivo Machine.config que redireciona as referências ao assembly.

  • Segurança de ficheiros.

    Os administradores geralmente protegem o diretório raiz do sistema usando uma Lista de Controle de Acesso (ACL) para controlar, gravar e executar o acesso. Como o cache de assembly global é instalado no diretório raiz do sistema, ele herda a ACL desse diretório. É recomendável que apenas usuários com privilégios de administrador tenham permissão para excluir arquivos do cache de assembly global.

  • Controle de versão lado a lado.

    Várias cópias de assemblies com o mesmo nome, mas informações de versão diferentes, podem ser mantidas no cache global de assemblies.

  • Local de pesquisa adicional.

    O common language runtime verifica o cache de assembly global para um assembly que corresponda à solicitação de assembly antes de examinar ou usar as informações da base de código em um arquivo de configuração.

Observe que há cenários em que você explicitamente não deseja instalar um assembly no cache de assembly global. Se você colocar um dos assemblies que compõem um aplicativo no cache de assembly global, não poderá mais replicar ou instalar o aplicativo usando XCOPY para copiar o diretório do aplicativo. Nesse caso, você também deve mover o assembly para o cache de assembly global.

Nesta Secção

Como instalar um assembly no cache de assembly global Descreve as maneiras de instalar um assembly no cache de assembly global.

Como: Exibir o conteúdo do cache de assembly global Explica como usar o Gacutil.exe (Global Assembly Cache Tool) para exibir o conteúdo do cache de assembly global.

Como: Remover um assembly do cache de assembly global Explica como usar o Gacutil.exe (Global Assembly Cache Tool) para remover um assembly do cache de assembly global.

Usando componentes com manutenção com o cache de montagem global Explica por que os componentes com manutenção (componentes COM+ gerenciados) devem ser colocados no cache de montagem global.

Criação de assemblies Fornece uma visão geral da criação de assemblies.

Cache de assembly global Descreve o cache de assembly global.

Como: Exibir conteúdo do assembly Explica como usar o Ildasm.exe (IL Disassembler) para exibir informações de linguagem intermediária comum (CIL) em um assembly.

How the Runtime Locates Assemblies Descreve como o common language runtime localiza e carrega os assemblies que compõem seu aplicativo.

Programação com assemblies Descreve assemblies, os blocos de construção de aplicativos gerenciados.