Global Assembly Cache
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.[1]
Команда для перевірки доступності збірки в 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[2]. Цей файловий менеджер дозволяє бачити всі сбірки, які входять у GAC, їх версії, публічні ключі, та цільову архітектуру. Збірки інсталюються за допогому drag-n-drop та деінсталюються звичним видаленням файлів.
Разом з випуском .Net Framework 4, Assembly Cache Viewer була визнана застарілою.[3]
Приклад використання
Уявимо, що на комп'ютері є дві .NET-збірки, що мають однакове ім'я AssemblyA, але одна з них має версію 1.0, а інша — 2.0. Оскільки GAC потребує, щоб обидві збірки мали ім'я AssemblyA, вони не можуть існувати в одній директорії в файлових системах FAT32 та NTFS. Зате, віртуальна файлова система Global Assembly Cache це дозволяє, та може бути використана програмами, які використовують різні версії однієї збірки окремо.
Див. також
Примітки
- Global Assembly Cache Tool (Gacutil.exe). Redmond, Washington: Microsoft Corporation. Архів оригіналу за 14 липня 2013. Процитовано 27 травня 2010.
- Assembly Cache Viewer (Shfusion.dll). Redmond, Washington: Microsoft Corporation. Архів оригіналу за 14 липня 2013. Процитовано 27 травня 2010. (англ.)
- How to: View the Contents of the Global Assembly Cache. Redmond, Washington: Microsoft Corporation. Архів оригіналу за 14 липня 2013. Процитовано 22 липня 2010. (англ.)