Загрузка 2 версий одного и того же плагина с помощью Silverlight/MEF

Мой сценарий — классический сценарий MEF. Существует хост-приложение Silverlight, и приложение может загружать плагины на лету для добавления функциональности. Плагины могут быть созданы третьими лицами.

Теперь возникает проблема, когда разные плагины и/или хост-приложение ссылаются на разные версии одной и той же сборки.

Например:

-plugin A ссылается на версию 1.0 dll набора инструментов silverlight, а плагин B ссылается на версию 2.0 той же dll.

OR

-host app ссылается на версию 1.0 dll реактивных расширений, а плагин C ссылается на версию 2.0 той же dll.

Это проблема, которая, скорее всего, произойдет. Плагины и хост должны быть независимыми, но, имея в виду эту проблему, я понимаю, что данный плагин может работать какое-то время, а затем я обновляю ссылку на хост-приложение или добавляю новый плагин, вызывая другой плагин. ломать.

Я провел некоторое исследование загрузки сборки Silverlight и считаю, что одновременно может быть загружена только одна версия данной сборки. Поэтому я не знаю, как с этим справиться.

Любые идеи по этому поводу?


person Clems    schedule 13.04.2010    source источник


Ответы (1)


Вам нужно будет осуществлять некоторый контроль над тем, какие плагины приложение может загружать, и убедиться, что они работают вместе, если вы хотите убедиться, что это работает.

Если у вас есть два подключаемых модуля, которые ссылаются на разные версии одной и той же сборки, вы можете заставить их работать, пока в сборке нет критических изменений. Вы должны убедиться, что более поздняя версия сборки загружена первой, а затем Silverlight также будет использовать ее для подключаемого модуля, который ссылается на более старую версию сборки (обратите внимание, что такое поведение загрузчика сильно отличается от того, как оно работает на рабочем столе). .СЕТЬ).

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

person Daniel Plaisted    schedule 13.04.2010
comment
Спасибо за подробности. Это в значительной степени то, что я понял во время экспериментов. К сожалению, этого недостаточно для действительно динамичных сценариев, когда вы не можете заранее знать, какие плагины потребуются и когда. Думаю, мне остается надеяться, что концепция AppDomain будет представлена ​​в Silverlight 5. - person Clems; 14.04.2010
comment
@Clems Как загружаются ваши плагины? Разве они не должны быть загружены с вашего сервера? Так ты не можешь контролировать их? - person Daniel Plaisted; 15.04.2010