Как Центр обновления Windows устанавливает сборки.NET в GAC?
Рассмотрим следующую команду
gacutil /i Microsoft.Powershell.ConsoleHost.dll
Это установит сборку в
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.PowerShell.ConsoleHost
Теперь рассмотрим другой компьютер без gacutil
, Вы можете установить это обновление, и та же сборка будет установлена в том же месте. Как это обновление устанавливается в глобальный кэш сборок без gacutil
?
1 ответ
Любая сборка должна (и в этом конкретном случае, скорее всего, будет) установлена с помощью установщика.
Из MSDN: Как установить сборку в глобальный кэш сборок:
Использование установщика Windows. Это рекомендуемый и наиболее распространенный способ добавления сборок в глобальный кэш сборок. Установщик обеспечивает подсчет ссылок сборок в глобальном кэше сборок, а также другие преимущества. [...] Gacutil.exe предназначен только для целей разработки и не должен использоваться для установки производственных сборок в глобальный кэш сборок.
Из MSDN: Установка сборок в глобальный кэш сборок:
Установщик Windows устанавливает общеязыковые сборки времени выполнения в глобальный кеш сборок с помощью Microsoft .NET Framework.
Из MSDN: DOC: API-интерфейсы глобального сборочного кэша (GAC) не документированы в документации пакета SDK для.NET Framework (через SO: перетащите DLL в GAC ("сборку") в Windows Server 2008.net 4.0):
Интерфейсы прикладного программирования (API) с собственным кодом, которые позволяют взаимодействовать с глобальным кэшем сборок (GAC), не описаны в документации.NET Framework Software Development Kit (SDK).
Фактическая установка, кажется, происходит через IAssemblyCache::InstallAssembly()
,