Моя цель:
Мы разрешаем интегрировать наш продукт со сторонними компонентами (библиотеками), которые не установлены как часть нашего продукта из-за лицензирования.В настоящий момент мы хотим загружать функции, относящиеся к сторонним компонентам, только если эти компоненты установлены на клиентском компьютере.
Текущее решение:
Я использую Assembly.ReflectionOnlyLoad
с предоставлением полных именсторонних сборок для проверки правильности установки сторонних компонентов до того, как приложение загрузит соответствующие функции.Это работает для следующих сценариев:
- Точные версии библиотек установлены в GAC
- Точные версии библиотек копируются в каталог приложений / пути зондирования
Проблема:
Теперь мне нужно изменить решение для поддержки политик издателя (перенаправить привязку сборки к новой версии).Я только что протестировал свой код, и похоже, что ReflectionOnlyLoad
игнорирует политику издателя, развернутую в GAC, поэтому мой механизм не будет загружать ожидаемые функции, даже если сборки сторонних производителей установлены правильно (новая версия с перенаправлением сборки).
Если я удалю свою проверку (= функции будут загружаться каждый раз), приложение будет корректно загружать новую версию сторонних сборок, поэтому политика издателя будет работать правильно, поскольку функции по-прежнему компилируются с зависимостью от старой версии.
Как проверить наличие сборки как в GAC, так и в путях проверки при использовании управления версиями и перенаправления сборки?