Compartilhar via


Cache de assemblies global

Observação

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.

Cada computador em que o Common Language Runtime está instalado tem um cache de código em todo o computador chamado Cache de Assembly Global. O Cache de Assembly Global armazena assemblies projetados especificamente para serem compartilhados por vários aplicativos no computador.

Você deverá compartilhar assemblies instalando-os no Cache de Assembly Global somente quando precisar. Como diretriz geral, mantenha as dependências do 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 a fim de torná-los acessíveis para interoperabilidade COM ou código não gerenciado.

Observação

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 o comando xcopy para copiar o diretório do aplicativo. Você também deve mover o assembly no Cache de Assembly Global.

Há duas maneiras de implantar um assembly no Cache de Assembly Global:

  • Use um instalador projetado para funcionar com o Cache de Assemblagem Global. Essa é a opção preferencial para instalar assemblies no Cache de Assembly Global.

  • Use uma ferramenta de desenvolvedor chamada Cache de Assembly Global (Gacutil.exe), fornecida pelo SDK do Windows.

    Observação

    Em cenários de implantação, utilize o Windows Installer para instalar assemblies no Cache Global de Assembly. Use a ferramenta Cache de Assemblagens Global somente em cenários de desenvolvimento, pois ela não fornece contagem de referência de assemblagens e outros recursos oferecidos ao se usar o Windows Installer.

A partir do .NET Framework 4, o local padrão do Cache de Assembly Global é %windir%\Microsoft.NET\assembly. Em versões anteriores do .NET Framework, o local padrão é %windir%\assembly.

Os administradores geralmente protegem o diretório systemroot usando uma ACL (lista de controle de acesso) para controlar o acesso de gravação e execução. Como o Cache de Assembly Global está instalado em um subdiretório do diretório systemroot, ele herda a ACL desse diretório. É recomendável que somente usuários com privilégios de administrador possam excluir arquivos do Cache de Assembly Global.

Assemblies implantados no Cache de Assembly Global devem ter um nome forte. Quando um assembly é adicionado ao Cache de Assembly Global, as verificações de integridade são executadas em todos os arquivos que compõem o assembly. O cache realiza essas verificações de integridade para garantir que um conjunto não tenha sido adulterado, por exemplo, quando um arquivo foi alterado, mas o manifesto não reflete a alteração.

Consulte também