Безопасно ли устанавливать производственные сборки с помощью gacutil.exe?

MSDN заявляет, что gacutil.exe небезопасно использовать для рабочих серверов. Есть ли для этого законная причина или Microsoft просто немного практикует CYA? Безопасно ли игнорировать это предупреждение? Или мне следует, наконец, научиться пользоваться Microsoft Windows Installer 2.0?

Точная формулировка MSDN:

Gacutil.exe предназначен только для целей разработки и не должен использоваться для установки рабочих сборок в глобальный кэш сборок.


person Jeff    schedule 27.01.2012    source источник
comment
не безопасно? Где встречается эта формулировка?   -  person Andrew Barber    schedule 27.01.2012
comment
Прости. Наверное, я немного намекнул. Он сказал, что это только для целей разработки. Добавлен язык MSDN.   -  person Jeff    schedule 27.01.2012
comment
Хорошо, лучше. Просто хотел проверить, что он сказал, и не смущать будущих читателей. :)   -  person Andrew Barber    schedule 27.01.2012
comment
Предупреждение, вероятно, связано с тем, что gacutil.exe запускается с правами администратора и может непреднамеренно перезаписать или удалить другие сборки с аналогичными именами из глобального кеша при неправильном использовании.   -  person Justin Pearce    schedule 27.01.2012


Ответы (2)


Элементы в глобальном кэше сборок совместно используются программами.

Когда вы используете Gacutil для добавления сборки в кеш, не будет подсчета ссылок на элементы, которые от нее зависят. Поэтому возможно, что когда вы используете GacUtil /U для удаления вашей библиотеки из кеша, вы сломаете другие программы, которые от нее зависят.

Напротив, установщик Windows 2.0 ведет подсчет и удаляет библиотеки из кэша сборок только тогда, когда это не требуется никакой другой программе.

person John Ruiz    schedule 27.01.2012
comment
Этот ответ технически ответил на мой вопрос лучше, чем на вопрос Ганса (хотя Ганс прочитал вопрос и был таким образом полезен). Спасибо! - person Jeff; 29.01.2012

Это связано с тем, что gacutil.exe не будет доступен на целевой машине. Он является частью Windows SDK, его версия .NET 4.0 находится в C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. У вас есть это на вашем компьютере, потому что вы установили Visual Studio.

Вы просто делаете это с помощью установщика. В проекте установки щелкните правой кнопкой мыши панель «Файловая система», «Добавить специальную папку» и выберите «Папка глобального кэша сборок». И поместите DLL туда.

person Hans Passant    schedule 27.01.2012
comment
Еще один хороший момент. Я не думал об этом, но он устанавливается вместе с VS, не так ли? - person John Ruiz; 27.01.2012
comment
Я знаю, что этого не было на рабочей машине, но, поскольку расширение оболочки доставляет мне проблемы, я подумал, что могу просто скопировать его. - person Jeff; 27.01.2012
comment
Расширение оболочки больше недоступно в .NET 4. Также имейте в виду, что GAC переместился из c:\windows\assembly в c:\windows\microsoft.net\assembly. - person Hans Passant; 27.01.2012
comment
Боже. Проект Setup был смехотворно прост в использовании. Я не должен бояться пробовать новое :) Спасибо. - person Jeff; 27.01.2012