Я разрабатываю расширяемое приложение с помощью MEF. В приложении будет много типов плагинов для сбора и обработки данных разными способами.
Я думаю о создании версионного онлайн-репозитория для подключаемых модулей, который позволит пользователю загружать новые версии подключаемых модулей, когда они станут доступны.
Было бы неплохо, если бы MEF мог одновременно загружать разные версии одного и того же плагина, хотя, насколько я понимаю, это невозможно (поправьте меня, если я ошибаюсь).
Поэтому я смирился с тем, что мне нужно будет обновить плагин и заархивировать предыдущую версию.
Какая стратегия для этого была бы лучшей?
Пример 1
Приложение загружает новую версию загруженного работающего плагина. Я не могу поместить плагин в каталог плагинов, так как уже существует DLL с таким именем. Так что я мог переименовать новый плагин с суффиксом версии. Я не могу загрузить ту же сборку, поэтому, думаю, придется принудительно перезапустить. Таким образом, при перезапуске он получает старый плагин и загружает новый.
--- Кажется, решения кажутся немного запутанными
Пример 2
Приложение загружает новую версию загруженного работающего плагина. Плагин заключен в какой-то установщик. Установщик корректно закрывает хост и архивирует существующий плагин. Установщик устанавливает новый плагин и перезапускает хост-приложение.
--- это тоже кажется немного беспорядочным
Я стремлюсь к исправлению своих предположений или к пониманию успешной стратегии достижения моей цели.