Olá Pessoal, aqui estamos em mais uma Quick Tips. Nesta vamos ver que é e para que server o GAC. Vamos a ele !!!
 
O Global Assembly Cache nada mais é do que uma pasta de disco especial onde todos os Assemblys compartilhados deverão ser colocados. No Windows XP ele esta localizado na pasta: \Windows\assembly, conforme figura abaixo.
 



 
Novamente podemos fazer uma comparação com o modelo COM de registro de componentes. Se o componente não é encontrado no mesmo diretório da aplicação, a aplicação procura-o no GAC, do mesmo modo com o COM pesquisa o registro.


Nota: Os componentes .NET não precisam ser registrados no registro do WIndows como no modelo COM.

Desta forma os componentes .NET não precisam ser registrados como os componentes COM , e , se você tiver um assembly que será usado por múltiplas aplicações ele é armazenado no GAC. (Isto somente é possível se eles tiverem um nome compartilhado)


Se o assembly não for localizado no diretório local nem no GAC você ainda pode ter um endereço de localização no arquivo de configuração. A CLR pode então fazer o download do assembly e armazenar o assembly no cache de download.

Para colocar e remover assemblies do GAC você tem que ter privilégios de administrador do sistema por questão de segurança.

Você pode ter diferentes versões do mesmo assembly carregadas no GAC ao mesmo tempo, e, mesmo se um componente estiver rodando no GAC você pode incluir outra versão do mesmo componente.
 
Você pode ver a hierarquia de assemblies contidos no GAC usando o comando: tree gac no prompt do DOS.
 
Ex: C:\Windows\assembly\tree gac
 
O resultado é exibido na figura abaixo:
 



 
 
Conclusão:
 
Como você pode ver o GAC é uma estrutura complexa de diretório que permite múltiplas versões de qualquer grupo e usa nomes fortes especiais para garantir que não seja possível um conflito de nome. Um assembly é armazenado em um diretório especial que usa o número de versão e um ID gerado individualmente.
 
No mais até a próxima dica.