Respuestas:
Correcto, así que básicamente es una forma de mantener las DLL accesibles a nivel mundial sin preocuparse por los conflictos. No más DLL Hell. Cada arquitectura y versión tiene su propio lugar para vivir.
También tiene su propia forma de navegar en Explorer, así que si vas a
C: \ Windows \ ensamblaje
En Windows Explorer, enumera todas las DLL.
Pero si enciendes cmd
, puedes ver cómo está realmente estructurado:
C: \ Users \ tritter> cd C: \ Windows \ assembly C: \ Windows \ ensamblaje> dir Directorio de C: \ Windows \ assembly 20/07/2009 02:18 PM <DIR> GAC 17/06/2009 04:22 PM <DIR> GAC_32 17/06/2009 04:22 PM <DIR> GAC_64 17/06/2009 04:22 PM <DIR> GAC_MSIL ...recorte... 0 Archivo (s) 0 bytes 9 Dir (s) 90,538,311,680 bytes gratis C: \ Windows \ assembly> cd GAC_64 C: \ Windows \ assembly \ GAC_64> dir Directorio de C: \ Windows \ assembly \ GAC_64 17/06/2009 16:22 <DIR>. 17/06/2009 04:22 PM <DIR> .. 19/01/2008 09:54 AM <DIR> blbproxy ...recorte... 19/01/2008 09:54 AM <DIR> srmlib 19/01/2008 06:11 AM <DIR> System.Data 19/01/2008 06:11 AM <DIR> System.Data.OracleClient ...recorte... 0 Archivo (s) 0 bytes 34 Dir (s) 90,538,311,680 bytes gratis C: \ Windows \ assembly \ GAC_64> cd System.Data C: \ Windows \ assembly \ GAC_64 \ System.Data> dir Directorio de C: \ Windows \ assembly \ GAC_64 \ System.Data 19/01/2008 06:11 AM <DIR>. 19/01/2008 06:11 AM <DIR> .. 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0 Archivo (s) 0 bytes 3 Dir (s) 90,538,311,680 bytes gratis 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 Directorio de 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 archivo (s) 3,008,512 bytes 2 Dir (s) 90,538,311,680 bytes gratis C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Aquí puede ver la versión 2.0.0.0__b77a5c561934e089 de System.Data.
Una DLL se identifica por 5 partes:
Aunque los primeros 3 son generalmente los grandes.
Vamos a desglosarlo:
Por lo tanto, el GAC debe ser un lugar para almacenar bibliotecas de código para que sean accesibles para todas las aplicaciones que se ejecutan en la máquina.
Cada computadora donde está instalado Common Language Runtime tiene una memoria caché de código de toda la máquina llamada memoria caché de ensamblado global. El caché global de ensamblados almacena ensamblados específicamente designados para ser compartidos por varias aplicaciones en la computadora.
Debe compartir ensamblados instalándolos en la caché global de ensamblados solo cuando lo necesite. Como pauta general, mantenga las dependencias de ensamblado privadas y ubique los ensamblados en el directorio de la aplicación a menos que se requiera explícitamente compartir un ensamblado. Además, no es necesario instalar ensamblados en la memoria caché global de ensamblados para que sean accesibles para interoperabilidad COM o código no administrado.
Lo que contiene MSDN puede sorprenderlo ... por lo general, puede leerlo como un artículo. Las partes sencillas y más importantes en la parte superior, los detalles intrincados más profundos. Ciertamente lo explica mejor que yo.
Tenga en cuenta que Visual Studio muestra todas las DLL en el GAC en la pestaña .NET de la ventana Referencias . (Haga clic con el botón derecho en un proyecto en el Explorador de soluciones y seleccione Agregar referencia). Esto debería darle una idea más tangible.
El Global Assembly Cache (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 ensamblajes se pueden compartir entre múltiples aplicaciones en la máquina registrándolos en la caché global de ensamblados (GAC). GAC es una caché local de ensamblajes de todo el equipo mantenida por .NET Framework.
Exe Application, en primer lugar, referencias de 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 siguiente ruta de GAC.
Camino GAC
1) C: \ Windows \ Assembly (para .NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ assembly (para .NET 4.0)
Cómo instalar un ensamblaje en GAC (como administrador)
1) Arrastrar y soltar
2) Use GacUtil.exe con el símbolo del sistema de Visual Studio
gacutil -i [Path][Assembly Name].dll
Cómo desinstalar un ensamblaje de GAC (como administrador)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh