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