Загрузка 2 версий одного и того же плагина с Silverlight / MEF - PullRequest
2 голосов
/ 13 апреля 2010

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

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

Например:

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

OR

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

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

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

Есть идеи по этому поводу?

1 Ответ

0 голосов
/ 13 апреля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...