Cache de montagem global

Cada computador onde o Common Language Runtime está instalado tem um cache de código em toda a máquina chamado Global Assembly Cache. O Global Assembly Cache armazena assemblies especificamente designados para serem compartilhados por vários aplicativos no computador.

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 Global Assembly Cache para torná-los acessíveis à interoperabilidade COM ou ao código não gerenciado.

Nota

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 trabalhar com o Global Assembly Cache. Esta é a opção preferida para instalar assemblies no Global Assembly Cache.

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

    Nota

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

A partir do .NET Framework 4, o local padrão para o 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 raiz do sistema usando uma lista de controle de acesso (ACL) para controlar, gravar e executar o acesso. Como o Global Assembly Cache é instalado em um subdiretório do 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.

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

Consulte também