GAC(Global AssemblyCache)全局程序集缓存是存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.windows.Froms等。
它在任何带有已安装的 CLR 的机器(例如已安装了 CF.NET 的 Pocket PC)上都可用。旨在跨应用程序共享的程序集可以存储在这里,而其必须有一个强名称。注意,安装了 GAC 的程序集必须有匹配的程序集名称和文件名,不包括文件扩展名(因此 MyAssembly 必须与 MyAssembly.dll 或 MyAssembly.exe 配对)。 GAC位于作业系统目录下,如果是windowsXP则可以在C:\Windows\Assembly(这也是基底类别库所在的位置)
程序集安装在GAC中的好处:
(1) 一个共享的位置意味着基于 RAM 的安装不需要有重复的 DLL(同一版本且同一文件名)耗费宝贵的空间。
(2)并行版本允许同一 DLL 名称的多个版本对 CF.NET 应用程序可用。在编译时,程序集存储它们所依照生成的程序集版本信息,这意味着他们将永远使用相同的程序集版本运行。因此,即便是此 DLL 的更新的版本可用,程序集也会继续使用旧的 DLL,从而防止了任何类型的向下不兼容。
(3)其他好处在于在桌面上使用 GAC,但不与压缩框架共享。CLR 将访问 Cgautil.exe 实用工具来用关于安装了 GAC 程序集的信息更新 GAC。要将您的程序集安装到 GAC 中,首先用一个强名称为其签名,然后在您的应用程序部署过程中包括一个文本文件(扩展名为 .GAC),如 CAB 文件。这个 .GAC 文件需要放在 \Windows 目录中,而且应该用 ANSI 或 UTF-8(不用 Unicode)编码。