Cache de montagem global (gac)

Definição - O que significa Global Assembly Cache (GAC)?

O Global Assembly Cache (GAC) é uma pasta no diretório do Windows para armazenar os assemblies .NET que são especificamente designados para serem compartilhados por todos os aplicativos executados em um sistema.

O conceito de GAC é o resultado da arquitetura .NET cujo design aborda a questão do "inferno das DLL" que existia no COM (Component Object Model). Ao contrário do COM, não há necessidade de o assembly no GAC ser registrado antes de seu uso. Cada assembly é acessado globalmente sem qualquer conflito, identificando seu nome, versão, arquitetura, cultura e chave pública.

Definirtec explica Global Assembly Cache (GAC)

O GAC é um cache de código em toda a máquina usado para execução lado a lado de assemblies. O GAC implementa o recurso de biblioteca compartilhada onde diferentes aplicativos reutilizam o código colocado nos arquivos localizados em uma pasta comum. No .NET 4.0, seu local padrão é:% windir% Microsoft.NET assembly

O GAC também é o primeiro no caminho de pesquisa ao carregar um assembly .NET. O único requisito para que um assembly seja implantado no GAC é que ele tenha um nome forte. O CLR (Common Language Runtime) se refere a um assembly com base na versão específica mencionada pelo aplicativo de chamada. O sistema de arquivos virtual do GAC ajuda a buscar o assembly específico da versão.

As duas ferramentas relacionadas ao GAC são GAC Tool (gacutil.exe) e Assembly Cache Viewer (shfusion.dll). A ferramenta GAC ​​é usada para verificar a existência de um assembly, registrar um assembly compartilhado, visualizar e manipular o conteúdo do GAC etc. O Visualizador do cache de assemblies é usado para exibir os detalhes (versão, cultura, etc.) associados aos assemblies contidos no cache.

O GAC oferece os benefícios de reutilização de código, segurança de arquivo (devido à sua instalação no diretório 'systemroot' e, portanto, a exclusão é apenas por usuários com privilégios de administrador), execução lado a lado (permitindo várias versões de um assembly mantido na mesma pasta ), etc.

Uma das desvantagens de usar o GAC é que a versão do .NET Framework instalada no sistema em que o GAC é usado e a versão usada para compilar o aplicativo precisam ser iguais. Além disso, nomes fortes não podem ser aplicados a assemblies (como código de terceiros) dos quais dependem os assemblies residentes na pasta GAC.