Global Assembly Cache () або GAC — це кеш .NET-збірок для платформи Microsoft's CLR в межах одного комп'ютеру. Концепція контрольованого єдиного репозиторію адрес та загальних бібліотек (shared libraries) допомагає уникати пасток, які ведуть до таких проблем, як DLL hell — проблеми підтримки бібліотек без зворотної сумісності та стандартів іменування.
Вимоги .NET-збірки, які розташовані у GAC повинні дотримуватися спеціальних правил для керування версіями, які дозволяють коду з різних версій виконуватись в контексті однієї програми, методу. Збірки у GAC повинні іменуватися згідно з конвенцією іменування Strong key.
Використання Microsoft підтримує два шляхи для роботи з Global Assembly Cache: Global Assembly Cache Tool (gacutil.exe) Assembly Cache Viewer (shfusion.dll)
Global Assembly Cache Tool gacutil.exe це стара утиліта командного рядка, яка входила ще до .NET 1.1 та досі доступна у .NET SDK.
Команда для перевірки доступності збірки в GAC: gacutil.exe /l <assemblyName>
Команда для реєстрації збірки в GAC: gacutil.exe /i <assemblyName>
Зареєструвати збірку можна й звичним копіюванням ів у директорію: %windir%\assembly\
У .NET 4.0 ця директорія змінена на: %windir%\Microsoft.NET\assembly\.
Інші параметри утиліти можна прочитати, додавши прапорець /?: gacutil.exe /?
Assembly Cache Viewer Це інтерфейс роботи з кешем, інтегрований в Windows Explorer . Цей файловий менеджер дозволяє бачити всі сбірки, які входять у GAC, їх версії, публічні ключі, та цільову архітектуру. Збірки інсталюються за допогому drag-n-drop та деінсталюються звичним видаленням файлів.
Разом з випуском .Net Framework 4, Assembly Cache Viewer була визнана застарілою.
Приклад використання
Уявимо, що на комп'ютері є дві .NET-збірки, що мають однакове ім'я AssemblyA, але одна з них має версію 1.0, а інша — 2.0. Оскільки GAC потребує, щоб обидві збірки мали ім'я AssemblyA, вони не можуть існувати в одній директорії в файлових системах FAT32 та NTFS. Зате, віртуальна файлова система Global Assembly Cache це дозволяє, та може бути використана програмами, які використовують різні версії однієї збірки окремо.
Див. також .NET Framework
Примітки
Посилання .NET Framework Developer's Guide Global Assembly Cache Tool (gacutil.exe) Demystifying the .NET Global Assembly Cache