Caché de ensamblados global (gac)

Definición: ¿Qué significa Global Assembly Cache (GAC)?

La caché de ensamblados global (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.

El concepto de GAC es el resultado de la arquitectura .NET cuyo diseño aborda el problema del "infierno de DLL" que existía en COM (Component Object Model). A diferencia de COM, no es necesario que el ensamblado en GAC esté registrado antes de su uso. Se accede a cada ensamblado globalmente sin ningún conflicto identificando su nombre, versión, arquitectura, cultura y clave pública.

Techinfo explica la caché de ensamblados global (GAC)

El GAC es un caché de código de toda la máquina que se utiliza para la ejecución de ensamblados en paralelo. El GAC implementa la función de biblioteca compartida donde diferentes aplicaciones reutilizan el código colocado en los archivos ubicados en una carpeta común. En .NET 4.0, su ubicación predeterminada es:% windir% Microsoft.NET assembly

El GAC también es el primero en la ruta de búsqueda al cargar un ensamblado .NET. El único requisito para implementar un ensamblado en GAC es que tenga un nombre seguro. CLR (Common Language Runtime) hace referencia a un ensamblado basado en una versión específica mencionada por la aplicación que realiza la llamada. El sistema de archivos virtual de GAC ayuda a obtener el ensamblado específico de la versión.

Las dos herramientas relacionadas con GAC son GAC Tool (gacutil.exe) y Assembly Cache Viewer (shfusion.dll). La herramienta GAC ​​se utiliza para verificar la existencia de un ensamblado, registrar un ensamblaje compartido, ver y manipular el contenido de GAC, etc. Al ser una carpeta del sistema, requiere privilegios de administrador para ser utilizada. El Visor de caché de ensamblados se utiliza para mostrar los detalles (versión, cultura, etc.) asociados con los ensamblados contenidos en el caché.

GAC proporciona los beneficios de la reutilización de código, seguridad de archivos (debido a su instalación en el directorio 'systemroot' y, por lo tanto, la eliminación es solo para usuarios con privilegios de administrador), ejecución en paralelo (permitiendo múltiples versiones de un ensamblado mantenidas en la misma carpeta ), etc.

Uno de los inconvenientes de usar GAC es que la versión de .NET Framework instalada en el sistema donde se usa GAC ​​y la que se usa para compilar la aplicación deben ser iguales. Además, los nombres seguros no se pueden aplicar a ensamblados (como código de terceros) de los que dependen los ensamblados que residen en la carpeta GAC.