Способы программной установки a.NET сборка в GAC
мне нужно создать небольшое приложение или скрипт для установки .NET-сборки в GAC. Я читал, что есть несколько способов сделать это, включая:
- используя
gacutil.exe
-
выполнение следующей строки кода:
new System.EnterpriseServices.Internal.Publish().GACInstall("Foo.dll");
однако, что произойдет, если я просто создам соответствующие каталоги на машине и скопирую сборку в этот каталог? Структура каталога GAC является следующий:C:WindowsassemblyGAC_MSILFoo<version#>__<public token>Foo.dll
делают ли вышеуказанные два метода что-то особенное, кроме создания структуры папок и размещения в ней сборки?
2 ответов
Я сильно рекомендуется использовать существующие методы (например, те, которые вы упомянули), потому что они поддерживаются и поддерживаются Microsoft и будут продолжать работать с будущими выпусками.
быстрый взгляд на gacutil.exe
с Контролировать Процесс показывает, что есть немного больше, чем просто копирование файлов:
- проблемы параллелизма (например, временные файлы, замок
WINDOWS\assembly\GACLock.dat
, etc.) - уведомления (например,
HKLM\SOFTWARE\Microsoft\Fusion\GACChangeNotification\...
) - индексирование (например,
HKLM\SOFTWARE\Microsoft\Fusion\NativeImagesIndex...
) - проверка (например, сильное имя ...)
фантик в System.EnterpriseServices
очень похоже на этот старый пост в блоге и должен работать просто отлично.
недавно нам пришлось сделать это для 10 серверов в корпоративной среде. Мы использовали Wix для создания очень простого MSI (серьезно - 5 минут работы) и опубликовали на всех серверах (и dev-боксах) через групповую политику.