Как Центр обновления 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(),

Другие вопросы по тегам