Respostas:
Certo, basicamente é uma maneira de manter as DLLs acessíveis globalmente sem se preocupar com conflitos. Não há mais DLL Hell. Cada arquitetura e versão tem seu próprio lugar para morar.
Ele também possui uma maneira própria de navegar no Explorer, portanto, se você for para
C: \ Windows \ assembly
No Windows Explorer, lista todas as DLLs.
Mas se você iniciar cmd
, poderá ver como é realmente estruturado:
C: \ Usuários \ tritter> CD C: \ Windows \ assembly C: \ Windows \ assembly> dir Diretório de C: \ Windows \ assembly 20/07/2009 02:18 <DIR> GAC 17/06/2009 04:22 <DIR> GAC_32 17/06/2009 04:22 <DIR> GAC_64 17/06/2009 04:22 <DIR> GAC_MSIL ...recorte... 0 Arquivo (s) 0 bytes 9 diretório (s) 90.538.311.680 bytes grátis C: \ Windows \ assembly> CD GAC_64 C: \ Windows \ assembly \ GAC_64> dir Diretório de C: \ Windows \ assembly \ GAC_64 17/06/2009 16:22 <DIR>. 17/06/2009 04:22 <DIR> .. 19/01/2008 09:54 <DIR> blbproxy ...recorte... 19/01/2008 09:54 <DIR> srmlib 19/01/2008 06:11 <DIR> System.Data 19/01/2008 06:11 <DIR> System.Data.OracleClient ...recorte... 0 Arquivo (s) 0 bytes 34 Dir (s) 90.538.311.680 bytes grátis C: \ Windows \ assembly \ GAC_64> cd System.Data C: \ Windows \ assembly \ GAC_64 \ System.Data> dir Diretório de C: \ Windows \ assembly \ GAC_64 \ System.Data 19/01/2008 06:11 <DIR>. 19/01/2008 06:11 <DIR> .. 11/04/2009 12:20 <DIR> 2.0.0.0__b77a5c561934e089 0 Arquivo (s) 0 bytes 3 diretório (s) 90.538.311.680 bytes grátis C: \ Windows \ assembly \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089> dir Diretório de C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 11/04/2009 12:20 <DIR>. 11/04/2009 12:20 <DIR> .. 11/04/2009 12:12 3,008,512 System.Data.dll 1 arquivo (s) 3.008.512 bytes 2 diretório (s) 90.538.311.680 bytes grátis C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Aqui você pode ver a versão 2.0.0.0__b77a5c561934e089 do System.Data.
Uma DLL é identificada por 5 partes:
Embora os três primeiros sejam geralmente os grandes.
Vamos dividir:
Portanto, o GAC deve ser um local para armazenar bibliotecas de códigos, para que sejam acessíveis a todos os aplicativos em execução na máquina.
Cada computador em que o Common Language Runtime está instalado possui um cache de código para toda a máquina chamado cache global de assemblies. O cache global de assemblies armazena assemblies especificamente designados para serem compartilhados por vários aplicativos no computador.
Você deve compartilhar montagens instalando-as no cache de montagem global somente quando necessário. Como orientação geral, mantenha as dependências de montagem privadas e localize as montagens no diretório do aplicativo, a menos que o compartilhamento de uma montagem seja explicitamente necessário. Além disso, não é necessário instalar assemblies no cache global de assemblies para torná-los acessíveis para interoperabilidade COM ou código não gerenciado.
As coisas que o MSDN contém podem surpreendê-lo ... geralmente você pode lê-lo como um artigo. Os bits diretos e mais importantes no topo, os detalhes intrincados mais profundamente. Certamente explica melhor do que eu poderia.
Observe que o Visual Studio exibe todas as DLLs no GAC na guia .NET da janela References . (Clique com o botão direito do mouse em um projeto no Solution Explorer e selecione Add Reference.) Isso deve fornecer uma idéia mais tangível.
O Global Assembly Cache (GAC) é uma pasta no diretório do Windows para armazenar os assemblies .NET especificamente designados para serem compartilhados por todos os aplicativos executados em um sistema. Os assemblies podem ser compartilhados entre vários aplicativos na máquina registrando-os no cache global de Assembly (GAC). O GAC é um cache local de assemblies em toda a máquina, mantido pelo .NET Framework.
Exe Application, em primeiro lugar, referências de um diretório atual para um subdiretório. E então, diretório do sistema. O diretório do sistema VS6.0 era ..windows / system32. O diretório do sistema .NET é como o caminho abaixo do GAC.
Caminho do GAC
1) C: \ Windows \ Assembly (para .NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ assembly (para .NET 4.0)
Como instalar um assembly no GAC (como administrador)
1) Arrastar e soltar
2) Use GacUtil.exe com o prompt de comando do Visual Studio
gacutil -i [Path][Assembly Name].dll
Como desinstalar um assembly do GAC (como administrador)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh