Qué es el GAC in.NET?


Solo busco un breve resumen de GAC para un lego, no un enlace por favor.

 149
Author: Nosrama, 2009-08-12

8 answers

Correcto, así que básicamente es una manera de mantener las DLL accesibles globalmente sin preocuparse por los conflictos. No más DLL Infierno. Cada arquitectura y versión tiene su propio lugar para vivir.

También tiene su propia manera de navegar en el Explorador, por lo que si vas a

C:\Windows\assembly

En el explorador de Windows enumera todas las DLL.

Pero si enciendes cmd, puedes ver cómo está realmente estructurado:

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>

Aquí puedes ver la versión 2.0.0.0 _ _ b77a5c561934e089 del Sistema.Datos.

Una DLL se identifica por 5 partes:

  1. Nombre
  2. Versión
  3. Arquitectura
  4. Cultura
  5. Clave pública

Aunque los primeros 3 son generalmente los grandes.

 140
Author: Tom Ritter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-12 20:06:00

GAC = Caché de Ensamblaje global

Vamos a desglosarlo:

  • global-se aplica a toda la máquina
  • assembly - lo que. NET llama a sus bibliotecas de código (DLL)
  • cache-un lugar para almacenar cosas para un acceso más rápido/común

Así que el GAC debe ser un lugar para almacenar bibliotecas de código para que sean accesibles a todas las aplicaciones que se ejecutan en la máquina.

 72
Author: Steven A. Lowe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-12 20:37:22

Caché de Ensamblaje Global

Cada equipo donde el común idioma tiempo de ejecución está instalado tiene un caché de código de toda la máquina llamada caché de ensamblaje global. Global la caché de ensamblajes almacena ensamblajes específicamente designado para ser compartido por varias aplicaciones en el ordenador.

Debe compartir asambleas por instalarlos en el global caché de ensamblaje solo cuando sea necesario. Como guía general, mantener el montaje dependencia privado, y localizar ensamblajes en la aplicación directorio a menos que se comparta un ensamblado se requiere explícitamente. Además, no es necesario instalar asambleas en la asamblea global caché para hacerlos accesibles a COM código interop o no administrado.

Las cosas que contiene MSDN pueden sorprenderte... por lo general, se puede leer como un artículo. Las partes directas y más importantes en la parte superior, los detalles intrincados más abajo. Ciertamente lo explica mejor de lo que yo podría.

Tenga en cuenta que Visual Studio muestra todas las DLL del GAC en la pestaña.NET de la ventana Referencias. (Haga clic derecho en un proyecto en el Explorador de soluciones y seleccione Agregar referencia.) Esto debería darte una idea más tangible.

 57
Author: Noldorin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-12 20:00:08

Biblioteca DLL centralizada.

 19
Author: Jeff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-12 19:55:41

Aplicación Exe, en primer lugar, hace referencia desde un directorio actual a un subdirectorio. Y luego, directorio del sistema. El directorio del sistema VS6. 0 era ..windows / system32. El directorio del sistema. NET es como la ruta GAC a continuación.

  1. Ruta GAC

    1) C:\Windows\Assembly (para. NET 2.0 ~ 3.5)

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

  2. Cómo instalar un ensamblado en GAC (como Administrador)

    1) Arrastrar y soltar

    2) Uso GacUtil.exe con Símbolo del sistema de Visual Studio

     gacutil -i [Path][Assembly Name].dll
    
    • Nota: Para instalar un ensamblado en el GAC, el ensamblado debe tener un nombre fuerte. De lo contrario, obtendrá un error como este: Error al agregar ensamblado a la caché: Intente instalar un ensamblado sin un nombre fuerte.
  3. Cómo desinstalar un ensamblado de GAC (como Administrador)

     gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh
    
    • Nota: no tiene extensión, .DLL. La versión y PublicKeyToken se pueden omitir y verificar en la asamblea del GAC.
 9
Author: INS software,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-17 23:54:54

La Caché Global de Ensamblados (GAC) es una carpeta en el directorio de Windows para almacenar los ensamblados.NET que están específicamente designados para ser compartidos por todas las aplicaciones ejecutadas en un sistema. Los ensamblados se pueden compartir entre varias aplicaciones en la máquina registrándolos en global Assembly cache(GAC). GAC es una caché local de ensamblajes mantenida por.NET Framework.

 7
Author: Kalyan Raj S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-14 06:44:07

Es como el registro COM hecho bien, con respecto a los archivos físicos, así como su interfaz y la información de ubicación. En COM, los archivos estaban en todas partes, con metadatos centralizados. El GAC centraliza el rodaje.

 5
Author: ProfK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-12 22:48:21

GAC (Caché de ensamblado global) es donde residen todos los ensamblados de.NET compartidos.

 5
Author: fdsf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-04 05:02:26