GAC. Чтобы добавить сборку в GAC, перетаскивание работает, а копирование и вставка — нет? Почему?

Я хотел бы знать, почему перетаскивание работает, а копирование и вставка - нет. Что происходит с перетаскиванием, чего не происходит с копированием и вставкой?


person richard    schedule 24.02.2011    source источник
comment
Пора забыть об этом. Расширение оболочки недоступно для .NET 4.0, а GAC больше не находится по адресу c:\windows\assembly.   -  person Hans Passant    schedule 25.02.2011
comment
LOL К сожалению, на данный момент я все еще поддерживаю клиентские приложения версии 2.0. Приятно знать, что это не то же самое для 4.0.   -  person richard    schedule 25.02.2011


Ответы (2)


Когда вы перетаскиваете свою сборку в папку C:\windows\assembly, она на самом деле не копируется туда — специальный подключаемый модуль Windows Explorer вызывает gacutil, чтобы установить сборку в GAC.

Этот плагин Explorer может сбивать с толку, потому что он может создать иллюзию, что GAC — это просто простая папка с множеством DLL. На самом деле это иерархическая структура с папкой для каждого имени сборки, внутри которой есть папки для разных версий и так далее.

Если вы хотите увидеть настоящую структуру GAC, откройте HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion в реестре Windows и установите DWORD DisableCacheViewer в 1. Это отключит плагин Cache Viewer, который делает GAC таким простым (но также сделает перетаскивание для установки непригодным — вам придется вызывать gacutil самостоятельно). Конечно, вы также можете использовать альтернативные файловые менеджеры или консоль, если не хотите возиться с настройками реестра.

Что касается причин, по которым копирование и вставка не работает, я полагаю, что тот, кто разработал плагин Cache Viewer, думал, что перетаскивание — это хорошая метафора для помещения чего-либо в GAC, в то время как реализация копирования и вставки сделать так, чтобы GAC выглядел как обычная папка, это не так.

person Dan Abramov    schedule 24.02.2011

Спасибо Дэн Абрамов: я добавил еще кое-что по этому поводу

Проблема: не работает копирование и вставка в сборке для установки новой dll (папка C:\windows\assembly)

Ответ: - вы можете увидеть архитектуру папки, изменив запись regedit через строку «DisableCacheViewer» DWORD в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion, сделайте ее «1»

так что вы можете увидеть представление папки под тем же файлом .

и вы можете создать дамп всех других сборок Dll с помощью утилиты. Откройте CMD и введите ниже, чтобы использовать утилиту для установки "gacutil /i .dll"

для UN-установки "gacutil /u .dll"

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

/il

а также

/ul

вариант

лучше всего создать пакетный файл и запустить его в "C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\Bin" по адресу только однажды

Спасибо, Ашутош Сони.

person ashutosh    schedule 17.01.2012