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


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

8 149

8 ответов:

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

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

C:\Windows\assembly

в проводнике 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.0.0.0__b77a5c561934e089>dir

 Directory of C:\Windows\assembly\GAC_64\System.Data.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.0.0.0__b77a5c561934e089>

здесь вы можете увидеть версию 2.0.0.0__b77a5c561934e089 системы.Данные.

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

  1. имя
  2. версия
  3. архитектура
  4. культура
  5. Публичный Ключ

хотя первые 3, как правило, большие.

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

давайте разберем его:

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

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

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

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

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

обратите внимание, что Visual Studio отображает все библиотеки DLL в GAC на вкладке .NET ссылки

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

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

  1. GAC path

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

    2) C:\WINDOWS\Micorosoft.NET\assembly (для .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. Версию и PublickeyToken можно опустить и проверить в сборке GAC.

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

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

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