Использование недокументированных API с собственным кодом для установки элементов в GAC - PullRequest
0 голосов
/ 16 сентября 2009

Я работаю над проектом, установка которого использует API, описанные в статье базы знаний Microsoft KB317540 , для установки и удаления сборок в GAC. В статье базы знаний говорится:

РЕЗЮМЕ
Приложение с нативным кодом программные интерфейсы (API), которые позволяют взаимодействовать с Глобальным Сборочный кеш (GAC) не задокументировано в .NET Framework Комплект для разработки программного обеспечения (SDK) документация.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
ВНИМАНИЕ: не используйте эти API в вашем приложении для выполнить монтажные привязки или проверить наличие сборок или других время выполнения, разработки или разработки операции. Только административные инструменты и программы установки должны использовать эти API-интерфейсы. Если вы используете GAC, это непосредственно подвергает ваше приложение хрупкость сборки или может заставить ваше приложение работать неправильно в будущих версиях .NET Framework.

GAC хранит сборки, которые общий для всех приложений на компьютер. Фактическое место хранения и структура GAC не задокументировано и может быть изменено в будущие версии .NET Framework и операционная система Microsoft Windows система.

Единственный поддерживаемый метод доступа Ассамблеи в GAC через API, которые описаны в этом статья.

Большинство приложений не должны использовать эти API, потому что сборка привязка выполняется автоматически общеязыковая среда выполнения. Только пользовательские программы установки или управления инструменты должны использовать эти API. Microsoft Установщик Windows имеет встроенную поддержку для установки сборок в GAC.

Для получения дополнительной информации о сборках и GAC, см. .NET Framework SDK.

Используйте GAC API в следующих сценарии: при установке Сборка в GAC. Когда вы удаляете сборка от GAC. Когда ты экспортировать сборку из GAC. когда вы перечисляете сборки, которые доступно в GAC. НОТА: CoInitialize (Ex) должен быть вызван до Вы используете любую из функций и интерфейсы, которые описаны в этом спецификация.

Каковы плюсы и минусы этой техники? Безопасно ли использовать эти API? Кто-нибудь там использует их? Если так, то почему?

Ответы [ 2 ]

1 голос
/ 16 сентября 2009

Почему бы просто не создать пакет установщика Windows? См. Демистификация глобального кэша сборок .NET . Цитирование:

Разработчики Windows Installer пакеты могут устанавливать сборки на GAC с помощью установщика Microsoft Windows 2,0. Это предпочтительный способ установки таких общих сборок и должен быть единственным способом обмена сборки установлены на не проявочные машины.

1 голос
/ 16 сентября 2009

В нем говорится: «Только API-средства и программы установки должны использовать эти API.»

Существуют инструменты (например, инструменты командной строки) для работы с GAC. Почему бы не вызывать эти исполняемые файлы вместо непосредственного использования этих API?

...