Что такое GAC в .NET?

Просто найдите краткий обзор GAC для непрофессионала, а не ссылку.

Ответ 1

Правильно, поэтому в основном это способ поддерживать доступ к DLL глобально, не беспокоясь о конфликтах. Больше не DLL Hell. Каждая архитектура и версия получает свое собственное место для жизни.

Он также получает собственный способ просмотра в проводнике, поэтому, если вы перейдете к

C:\Windows\узел

В проводнике Windows перечислены все библиотеки DLL.

Но если вы запустили cmd, вы можете увидеть, как он действительно структурирован:

C:\Users\tritter>cd C:\Windows\assembly

C:\Windows\assembly>dir

 Directory of C:\Windows\assembly

07/20/2009  02:18 PM    <DIR>          GAC
06/17/2009  04:22 PM    <DIR>          GAC_32
06/17/2009  04:22 PM    <DIR>          GAC_64
06/17/2009  04:22 PM    <DIR>          GAC_MSIL
 ...snip...
               0 File(s)              0 bytes
               9 Dir(s)  90,538,311,680 bytes free

C:\Windows\assembly>cd GAC_64

C:\Windows\assembly\GAC_64>dir

 Directory of C:\Windows\assembly\GAC_64

06/17/2009  04:22 PM    <DIR>          .
06/17/2009  04:22 PM    <DIR>          ..
01/19/2008  09:54 AM    <DIR>          blbproxy
 ...snip...
01/19/2008  09:54 AM    <DIR>          srmlib
01/19/2008  06:11 AM    <DIR>          System.Data
01/19/2008  06:11 AM    <DIR>          System.Data.OracleClient
 ...snip...
               0 File(s)              0 bytes
              34 Dir(s)  90,538,311,680 bytes free

C:\Windows\assembly\GAC_64>cd System.Data

C:\Windows\assembly\GAC_64\System.Data>dir
 Directory of C:\Windows\assembly\GAC_64\System.Data

01/19/2008  06:11 AM    <DIR>          .
01/19/2008  06:11 AM    <DIR>          ..
04/11/2009  12:20 PM    <DIR>          2.0.0.0__b77a5c561934e089
               0 File(s)              0 bytes
               3 Dir(s)  90,538,311,680 bytes free

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

 Directory of 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 File(s)      3,008,512 bytes
               2 Dir(s)  90,538,311,680 bytes free

C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089>

Здесь вы можете увидеть версию 2.0.0.0__b77a5c561934e089 из System.Data.

DLL идентифицируется по 5 частям:

  • Имя
  • Версия
  • Архитектура
  • Культура
  • Открытый ключ

Хотя первые 3 обычно являются большими.

Ответ 2

GAC = глобальный кэш сборок

Позвольте сломать его:

  • global - применяется ко всей машине
  • assembly - то, что .NET называет своими кодовыми библиотеками (DLL)
  • cache - место для хранения вещей для быстрого/общего доступа.

Таким образом, GAC должен быть местом для хранения библиотек кода, чтобы они были доступны для всех приложений, запущенных на машине.

Ответ 3

Глобальный кэш сборок

Каждый компьютер, на котором языковая среда исполнения имеет машинный кеш-код, называемый глобальный сборный кеш. Глобальный сборка кеша хранит сборки специально предназначенные для совместного использования несколькими приложениями на компьютер.

Вы должны делиться сборками установки их в глобальную кеширование сборок только тогда, когда вам нужно. В качестве общего руководства держите сборку зависимых частных и найти сборки в приложении каталог, если не используется сборка явно требуется. К тому же, нет необходимости устанавливать сборки в глобальной сборке кеш, чтобы сделать их доступными для COM interop или неуправляемый код.

То, что содержит MSDN, может удивить вас... вы можете обычно читать его как статью. Прямые и самые важные биты наверху, сложные детали глубже. Это, конечно, объясняет это лучше, чем я мог.

Обратите внимание, что Visual Studio отображает все DLL файлы в GAC на вкладке .NET окна "Ссылки". (Щелкните правой кнопкой мыши по проекту в обозревателе решений и выберите Добавить ссылку.) Это должно дать вам более взвешенную идею.

Ответ 4

Централизованная библиотека DLL.

Ответ 5

Exe Application, прежде всего, ссылается из текущего каталога на подкаталог. А затем, системный каталог. Системный каталог VS6.0 был..windows/system32. Системный каталог .NET похож на приведенный ниже путь GAC.

  1. Путь GAC

    1) C:\Windows\Assembly (для .NET 2.0 ~ 3.5)

    2) C:\Windows\Microsoft.NET\сборка (для .NET 4.0)

  2. Как установить сборку в GAC (от имени администратора)

    1) Перетащите

    2) Используйте GacUtil.exe с командной строкой Visual Studio

     gacutil -i [Path][Assembly Name].dll
    
    • Примечание. Чтобы установить сборку в GAC, сборка должна иметь строгое имя. В противном случае вы получите ошибку, подобную этой: Ошибка добавления сборки в кэш: Попытка установить сборку без строгого имени.
  3. Как удалить сборку из GAC (от имени администратора)

     gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh
    
    • Примечание: не имеет расширения,.dll. Version и PublickeyToken могут быть опущены и проверены в сборке GAC.

Ответ 6

Глобальный кэш сборок (GAC) - это папка в каталоге Windows для хранения сборников .NET, специально предназначенных для совместного использования всеми приложениями, выполняемыми в системе. Ассембли могут делиться между несколькими приложениями на машине, регистрируя их в глобальном кэше сборок (GAC). GAC - это машина, в которой используется локальный кеш сборок, поддерживаемых платформой .NET Framework.

Ответ 7

Это похоже на реестр COM, сделанный правильно, в отношении физических файлов, а также их информации о интерфейсе и местоположении. В COM файлы были повсюду, с централизованными метаданными. GAC централизует побег.

Ответ 8

GAC (глобальный кэш сборок) - это место, где находится общая сборка .NET.