2014-11-27 3 views
0

рассмотрим следующую командуКак Windows Update устанавливает сборки .NET в GAC?

gacutil /i Microsoft.Powershell.ConsoleHost.dll 

Это позволит установить сборку

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.PowerShell.ConsoleHost 

Теперь рассмотрим другой компьютер без gacutil. Вы можете установить this update и тот же сборщик будет установлен на том же месте. Как это обновление устанавливается на Глобальный сборный кэш без gacutil?

+0

Что заставляет вас полагать, что обновление не использует 'gacutil' или не делает то же самое, что и' gacutil' (По последним я имею в виду, что Microsoft владеет как инструментом gacutil, так и установкой обновления/установки и т. Д. Они как в конце.) –

+0

Прохладный .. тогда вы знаете, что установщики не используют 'Gacutil'. Как update/installer добавляет сборку в GAC .. Не знаю, что он детализирует, но MS написала код для установщика, чтобы сделать это. Мне жаль, если я все еще не пропущу точку вашего вопроса. –

+2

Сплав api можно использовать [любым кодом] (http://stackoverflow.com/a/2611435/17034), он не требует gacutil. –

ответ

2

Любая сборка должна (и в этом конкретном случае, скорее всего, будет) установлена ​​с помощью установщика.

От MSDN: How to: Install an Assembly into the Global Assembly Cache:

Использование установщика Windows. Это рекомендуемый и наиболее распространенный способ добавления сборок в глобальный кэш сборок. Установщик обеспечивает подсчет ссылок сборок в глобальном кеше сборок и другие преимущества. [...] Gacutil.exe предназначен только для целей разработки и не должен использоваться для установки сборок сборки в глобальный кэш сборок.

От MSDN: Installation of Assemblies to the Global Assembly Cache:

установщика Windows устанавливает общий язык во время выполнения сборки в глобальный кэш сборок с использованием Microsoft .NET Framework.

От MSDN: DOC: Global Assembly Cache (GAC) APIs Are Not Documented in the .NET Framework Software Development Kit (SDK) Documentation (через SO: Drag and drop a DLL to the GAC (“assembly”) in windows server 2008 .net 4.0):

Родные программные интерфейсы прикладного кода (API), которые позволяют взаимодействовать с глобальной кэша сборок (GAC) не описаны в .NET Framework Software Разработка Kit (SDK).

Фактическая установка, по-видимому, осуществляется через IAssemblyCache::InstallAssembly().

+0

См. (Ninja-) edit: фактические API .NET для управления GAC не документированы (полностью). Разумеется, нет инструмента командной строки, о котором я знаю, кроме гакутила. – CodeCaster