Відповіді:
Так, в основному це спосіб зберегти DLL глобально доступними, не турбуючись про конфлікти. Більше немає пекла DLL. Кожна архітектура та версія отримує власне місце для проживання.
Також у нього є власний спосіб перегляду його в Провіднику, тому якщо ви переходите до цього
C: \ Windows \ збірка
У Windows Explorer він перераховує всі DLL-файли.
Але якщо ви підпалите cmd
, ви можете бачити, як це насправді структуровано:
C: \ Користувачі \ tritter> cd C: \ Windows \ збірка C: \ Windows \ збірка> реж Каталог C: \ Windows \ збірка 20.07.2009 14:18 <DIR> GAC 17.06.2009 16:22 <DIR> GAC_32 17.06.2009 16:22 <DIR> GAC_64 17.06.2009 16:22 <DIR> GAC_MSIL ... сніп ... 0 Файл (и) 0 байт 9 дир (и) 90,538,311,680 байт безкоштовно C: \ Windows \ зборка> cd GAC_64 C: \ Windows \ збірка \ GAC_64> реж Каталог C: \ Windows \ зборка \ GAC_64 17.06.2009 16:22 <DIR>. 17.06.2009 16:22 <DIR>. 19.01.2008 09:54 <DIR> blbproxy ... сніп ... 19.01.2008 09:54 <DIR> srmlib 19.01.2008 06:11 <DIR> Система.Дані 19.01.2008 06:11 <DIR> Система.Дані.OracleClient ... сніп ... 0 Файл (и) 0 байт 34 дир (и) 90,538,311,680 байт безкоштовно C: \ Windows \ Assembly \ GAC_64> cd System.Data C: \ Windows \ збірка \ GAC_64 \ System.Data> реж Каталог C: \ Windows \ Assembly \ GAC_64 \ System.Data 19.01.2008 06:11 <DIR>. 19.01.2008 06:11 <DIR>. 11.04.2009 12:20 <DIR> 2.0.0.0__b77a5c561934e089 0 Файл (и) 0 байт 3 дир (и) 90,538,311,680 байт безкоштовно C: \ Windows \ зборка \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C: \ Windows \ зборка \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089> dir Каталог C: \ Windows \ Assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 11.04.2009 12:20 <DIR>. 11.04.2009 12:20 <DIR>. 11.04.2009 12:12 3,008,512 System.Data.dll 1 файл (и) 3,008,512 байт 2 дир (и) 90,538,311,680 байт безкоштовно C: \ Windows \ зборка \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
Тут ви можете побачити версію 2.0.0.0__b77a5c561934e089 System.Data.
DLL ідентифікується з 5 частин:
Хоча перші 3, як правило, великі.
Давайте розбимо його:
Таким чином, GAC повинен бути місцем для зберігання бібліотек коду, щоб вони були доступними для всіх програм, що працюють на машині.
Кожен комп'ютер, на якому встановлено загальну мову виконання, має кешований кеш-код, який називається глобальним кеш-збором. Глобальний кеш-сховище зберігає збори, спеціально призначені для спільного використання кількома програмами на комп'ютері.
Вам слід ділитися збірками, встановлюючи їх у глобальний кеш-зібрання лише тоді, коли вам потрібно. Як загальне правило, зберігайте залежність від складання приватною та знаходите збори в каталозі додатків, якщо явно не потрібно використовувати спільний збір. Крім того, не потрібно встановлювати збірки в глобальний кеш-збори, щоб зробити їх доступними для інтеропу COM або некерованого коду.
Те, що містить MSDN, може вас здивувати ... Ви зазвичай можете прочитати це як статтю. Прямий і найважливіший біт вгорі, заплутані деталі глибше вниз. Це, безумовно, пояснює це краще, ніж я міг.
Зауважте, що Visual Studio відображає всі DLL у GAC на вкладці .NET вікна Посилання . (Клацніть правою кнопкою миші на проект в Провіднику рішень і виберіть Додати довідку.) Це повинно дати вам більш відчутну ідею.
Глобальний кеш-асамблеї (GAC) - це папка в каталозі Windows для зберігання .NET-збірок, спеціально призначених для спільного використання всіма програмами, виконаними в системі. Асамблеї можна розділити між декількома додатками на машині, зареєструвавши їх у глобальному кеш-сховищі (GAC). GAC - це загальномашинний кеш-пам'ять, що підтримується .NET Framework.
Exe Application, насамперед, посилання з поточного каталогу на підкаталог. А потім, системний каталог. У системному каталозі VS6.0 було ..windows / system32. Системний каталог .NET подібний до маршруту GAC нижче.
Шлях GAC
1) C: \ Windows \ Assembly (для .NET 2.0 ~ 3.5)
2) C: \ Windows \ Microsoft.NET \ збори (для .NET 4.0)
Як встановити збірку в GAC (як адміністратор)
1) Перетягування
2) Використовуйте GacUtil.exe з командним рядком Visual Studio
gacutil -i [Path][Assembly Name].dll
Як видалити збірку від GAC (як адміністратора)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh