Как просмотреть папку и файлы в GAC?

109

Я хочу просмотреть папки и подпапки в GAC . Также хочу знать о добавлении и удалении из GAC .

Чтобы установить, мы пишем эти строки в командной строке, открыв Visual Studio command prompt: -

gacutil /i [assembly path]

Но для удаления нам понадобится только: -

gacutil /u [assembly name]

Зачем?

Рохит Випин Мэтьюз
источник
Если вы перейдете в одну из папок сборки в каталоге Windows, а затем наберете имя DLL, которое вы ищете, в строке поиска (проводника файлов), они должны начать отображаться.
JakeJ

Ответы:

136

Установить:

gacutil -i "path_to_the_assembly"

Посмотреть:

Открыть в папке проводника Windows

  • .NET 1.0 - NET 3.5: c:\windows\assembly( %systemroot%\assembly)
  • .NET 4.x: %windir%\Microsoft.NET\assembly

ИЛИ gacutil –l

Когда вы собираетесь установить сборку, вы должны указать, где gacutilее найти, поэтому вы также должны указать полный путь. Но когда сборка уже находится в GAC - gacutilзнайте путь к папке, поэтому ей просто нужно имя сборки.

MSDN:

sll
источник
4
Обратите внимание, что для .NET 4.0 расположение GAC теперь:% windir% \ Microsoft.NET \ assembly \
Алекс Ноласко
57

Я опоздал на день, а на этот доллар не хватило. Если вы хотите просмотреть структуру папок GAC в проводнике Windows, вы можете сделать это с помощью реестра :

  1. Запустите regedit.
  2. Перейдите в HKLM \ Software \ Microsoft \ Fusion.
  3. Добавьте DWORD с именем DisableCacheViewer и установите значение 1.

Для временного просмотра вы можете заменить путь к папке на диск, что удалит специальные свойства каталога.

  1. Запустите командную строку на уровне привилегий вашей учетной записи .
  2. Введите SUBST Z: C: \ Windows \ assembly
    • Z может быть любой свободной буквой диска.
  3. Откройте «Мой компьютер» и найдите новый замещающий каталог.
  4. Чтобы удалить виртуальный диск из командной строки, введите SUBST Z: / D

Что касается того, почему вы хотите сделать что-то подобное, я использовал этот трюк, чтобы сравнить библиотеки DLL GAC на разных машинах, чтобы убедиться, что они действительно одинаковы.

Ракуэн42
источник
Вы можете автоматизировать редактирование реестра с помощью Powershell:
Textcape,
Новый элемент «HKLM: \ Software \ Microsoft \ Fusion» -Force | New-ItemProperty -Name "DisableCacheViewer" -PropertyType DWord -Value 1 -Force | Out-Null
Textcape
40

Запустите программу «Выполнить» (Windows Vista / 7/8: введите ее в строке поиска меню «Пуск») и введите: C:\windows\assembly\GAC_MSIL

Затем перейдите в родительскую папку (Windows Vista / 7/8: щелкнув ее на панели проводника), чтобы увидеть все файлы GAC в обычном окне проводника. Теперь вы можете копировать, добавлять и удалять файлы, как и везде.

Юлиус Кунце
источник
Спасибо - это позволило мне использовать проводник Windows, который был помечен как устаревший с .NET 4
Дэйв Фридель,
8

Чтобы просмотреть файлы, просто просмотрите их из командной строки ( cmd), например:

c:\>cd \Windows\assembly\GAC_32
c:\Windows\assembly\GAC_32> dir

Для добавления и удаления файлов из GAC используйте инструмент gacutil

Клаус Бысков Педерсен
источник
Я хочу видеть это как обычную папку.
Рохит Випин Мэтьюз,
@CodingMastero Это НЕ обычная папка!
Клаус Бысков Педерсен
Разве мы не можем использовать какой-нибудь хак, чтобы рассматривать его как нормальный?
Рохит Випин Мэтьюз,
@CodingMastero Нет, не можете. Вы можете просмотреть его через командную строку, как указано выше.
Клаус Бысков Педерсен
1
Да. Извините, я, возможно, не совсем понял. Вы не можете использовать C:\Windows\assemblyдля просмотра .NET 4.0 GAC. Конечно, вы все еще можете использовать его с .NET 2/3 (если он также установлен). Не существует сопоставимых расширений оболочки (AFAIK), которые работают таким же образом для нового C:\Windows\Microsoft.NET\assemblyкаталога.
Christian.K
5

Вы устанавливаете как сборки, используя:

  • Программа установки, которую вы создаете для своего приложения.
  • Использование gacutil.exeинструмента с -iопцией из командной строки.
  • Удаление сборки %windir%\Assembly(только до .NET 3.5, CLR 2.0)

Вы просматриваете содержимое GAC, используя:

  • gacutil.exeИнструмент с -lопцией.
  • Для .NET 2.0, 3.0 и 3.5 (CLR 2.0) просмотр с %windir%\assemblyпомощью проводника Windows.

Обратите внимание, что (физическое) расположение GAC изменилось для .NET 4.0. Его больше нет %windir%\Assembly, но теперь оно доступно %windir%\Microsoft.NET\assembly. Тем не менее, вы никогда не должны писать код, который зависит от физического местоположения, потому что, учитывая доступные инструменты, это вряд ли необходимо (помимо некоторых «крутых» самодельных инструментов диагностики системы).

Christian.K
источник
Помимо gacutil.exeединственного другого доступного инструмента, о котором я знаю, это fusion.dll.
Скотт Солмер 01