У меня есть сборка .NET со строгим именем PluginHost , которая динамически загружает сборки плагинов, используя Assembly.LoadFrom()
. Он имеет версию сборки и файла 1.0.0.0. Каждая сборка плагина ссылается на PluginHost, потому что в PluginHost определен интерфейс, который должен быть реализован в каждом плагине.
Теперь я хочу развернуть обновленную, но полностью обратно совместимую версию PluginHost с сборкой и версией файла 1.0.0. 1 . Но теперь старые подключаемые модули не загружаются, так как они ссылаются на PluginHost через его строгое имя, которое включает номер версии.
Как я могу развернуть новую версию PluginHost, не ломая старые плагины?
Одно решение, которое я нашел, - это установить версию сборки PluginHost на 1.0 и поддерживать ее на уровне 1.0 даже в обновленной версии. Я меняю только File-версию с 1.0.0.0 на 1.0.0.1 и так далее с каждым новым обновлением. Таким образом старые плагин-сборки загружаются без проблем.
Но так ли это? Есть ли способ лучше? Я не думаю, что оставить версию Assembly на постоянном значении правильно.
Дополнительная справочная информация, которая может представлять интерес: PluginHost используется с COM Interop в приложении VB6. Вот почему у него есть сильное имя. Ни PluginHost, ни плагины не находятся в GAC. PluginHost зарегистрирован в RegAsm.exe.
Спасибо.
Обновление
Спасибо за ваши ответы. Поскольку кажется, что нет разумного способа использовать файл конфигурации приложения с COM Interop, я думаю, что я останавливаюсь на зависании версии Assembly и меняю версию файла только в новых версиях PluginHost.