O que é o GAC in.NET?

Só estou à procura de uma visão geral do GAC para um leigo, não um link, por favor.

 149
Author: Nosrama, 2009-08-12

8 answers

Certo, então basicamente é uma maneira de manter DLLs globalmente acessíveis sem se preocupar com conflitos. Acabou-se o inferno. Cada arquitetura e versão tem seu próprio lugar para viver.

Ele também consegue a sua própria maneira de navegar no Explorer, por isso se você for para

C:\Windows\assembly

No windows explorer lista todos os DLLs.

Mas se você ligar cmd, você pode ver como é realmente estruturado:

C:\Users\tritter>cd C:\Windows\assembly

C:\Windows\assembly>dir

 Directory of C:\Windows\assembly

07/20/2009  02:18 PM    <DIR>          GAC
06/17/2009  04:22 PM    <DIR>          GAC_32
06/17/2009  04:22 PM    <DIR>          GAC_64
06/17/2009  04:22 PM    <DIR>          GAC_MSIL
 ...snip...
               0 File(s)              0 bytes
               9 Dir(s)  90,538,311,680 bytes free

C:\Windows\assembly>cd GAC_64

C:\Windows\assembly\GAC_64>dir

 Directory of C:\Windows\assembly\GAC_64

06/17/2009  04:22 PM    <DIR>          .
06/17/2009  04:22 PM    <DIR>          ..
01/19/2008  09:54 AM    <DIR>          blbproxy
 ...snip...
01/19/2008  09:54 AM    <DIR>          srmlib
01/19/2008  06:11 AM    <DIR>          System.Data
01/19/2008  06:11 AM    <DIR>          System.Data.OracleClient
 ...snip...
               0 File(s)              0 bytes
              34 Dir(s)  90,538,311,680 bytes free

C:\Windows\assembly\GAC_64>cd System.Data

C:\Windows\assembly\GAC_64\System.Data>dir
 Directory of C:\Windows\assembly\GAC_64\System.Data

01/19/2008  06:11 AM    <DIR>          .
01/19/2008  06:11 AM    <DIR>          ..
04/11/2009  12:20 PM    <DIR>          2.0.0.0__b77a5c561934e089
               0 File(s)              0 bytes
               3 Dir(s)  90,538,311,680 bytes free

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

 Directory of C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089

04/11/2009  12:20 PM    <DIR>          .
04/11/2009  12:20 PM    <DIR>          ..
04/11/2009  12:12 PM         3,008,512 System.Data.dll
               1 File(s)      3,008,512 bytes
               2 Dir(s)  90,538,311,680 bytes free

C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089>
Aqui você pode ver a versão 2.0.0.0.0_ _ b77a5c561934e089 of System.Dado.

A DLL é identificada por 5 partes:

  1. nome
  2. Versão
  3. Arquitectura
  4. Cultura
  5. Chave Pública

Embora os primeiros 3 sejam geralmente os grandes.

 140
Author: Tom Ritter, 2009-08-12 20:06:00

GAC = Global Assembly Cache

Vamos acabar com isto.
  • global-aplica-se a toda a máquina
  • assembly-what. net chama as suas bibliotecas de código (DLLs)
  • cache-um lugar para armazenar coisas para um acesso mais rápido/comum
Então o GAC deve ser um lugar para armazenar bibliotecas de códigos para que sejam acessíveis a todas as aplicações que rodam na máquina.
 72
Author: Steven A. Lowe, 2009-08-12 20:37:22

'Cache' Global Assembly

Cada computador onde o comum o tempo de execução da linguagem está instalado tem um a 'cache' de código em toda a máquina chamada cache global assembly. Global armazenamento de cache de montagem dos conjuntos especificamente designado para ser partilhado por várias aplicações computador.

Você deve compartilhar assembleias por instalá-los no global cache de montagem apenas quando você precisa. Como orientação geral, manter a montagem dependências privadas e localizar conjuntos na aplicação pasta, a menos que partilha um conjunto é explicitamente exigido. Alem, não é necessário instalar assembleias na Assembleia global cache para torná-los acessíveis a COM código interop ou não gerido.

As coisas que a MSDN contém podem surpreender-te... normalmente lê-se como um artigo. Os bits simples e mais importantes no topo, os detalhes intrincados mais abaixo. Certamente explica é melhor do que eu poderia.

Note que o Visual Studio mostra todos os DLLs do GAC na página.NET da janela de referências . (Clique com o botão direito sobre um projeto no Solution Explorer e selecione Adicionar Referência. Isto deve dar-lhe uma ideia mais tangível.

 57
Author: Noldorin, 2009-08-12 20:00:08
Biblioteca DLL centralizada.
 19
Author: Jeff, 2009-08-12 19:55:41

Aplicação Exe, em primeiro lugar, referências de uma pasta actual para uma sub-pasta. E depois, o directório do sistema. Era o directório do sistema VS6.0 ..windows / system32. O directório do sistema do. NET é como a localização do GAC abaixo.

  1. Localização do GAC

    1) C:\Windows\Assembly (para. NET 2, 0 ~ 3, 5)

    2) C:\WINDOWS\Micorosoft.NET\assembly (para. NET 4.0)

  2. Como instalar um conjunto no GAC (como administrador)

    1) arrastar e largar

    2) utilizar GacUtil.exe com comando Visual Studio Prompt

     gacutil -i [Path][Assembly Name].dll
    
    • Nota: para instalar um conjunto no GAC, o conjunto deve ser fortemente nomeado. Caso contrário, obterá um erro como este: Falha ao adicionar a montagem à 'cache': Tente instalar um conjunto sem um nome forte.
  3. Como desinstalar uma montagem do GAC (como administrador)

     gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh
    
    • Nota: não tem extensão .dll. Versão e Publickeyoken pode ser omitida e verificada na montagem GAC.
 9
Author: INS software, 2014-09-17 23:54:54

A 'Cache' Global Assembly (GAC) é uma pasta no directório do Windows para armazenar os conjuntos.NET que são especificamente designados para serem partilhados por todas as aplicações executadas num sistema. Conjuntos podem ser compartilhados entre várias aplicações na máquina, registrando-os no cache Global Assembly(GAC). GAC é uma máquina de largura um cache local de conjuntos mantidos pelo Framework.net.

 7
Author: Kalyan Raj S, 2014-02-14 06:44:07
É como se o registo COM tivesse feito bem, no que diz respeito aos ficheiros físicos, bem como à sua interface e informação de localização. Em COM, os arquivos estavam em toda parte, com metadados centralizados. O GAC centraliza o tiro.
 5
Author: ProfK, 2009-08-12 22:48:21

O GAC (Global Assembly Cache) é onde reside todo o conjunto partilhado.net.

 5
Author: fdsf, 2014-01-04 05:02:26