使用Silverlight / MEF加载同一插件的2个版本

时间:2010-04-13 08:26:05

标签: silverlight assemblies version mef

我的场景是一个典型的MEF场景。有一个silverlight主机应用程序,该应用程序可以动态下载插件以添加功能。插件可以由第三方创建。

现在,当不同的插件和/或主机应用程序引用同一程序集的不同版本时会出现问题。

例如:

-plugin A引用silverlight工具包dll的1.0版本,插件B引用相同dll的2.0版本。

OR

-host app引用了响应式扩展dll的1.0版,插件C引用了同一个dll的2.0版。

这是一个极有可能发生的问题。 插件和主机都是独立的,但考虑到这个问题,我意识到一个给定的插件可以工作一段时间,然后我更新主机应用程序的引用,或添加一个新的插件,导致另一个插件断裂。

我已经对Silverlight程序集加载进行了一些研究,我相信一次只能加载给定程序集的一个版本。 因此我不知道如何处理这个问题。

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:0)

您需要对应用程序可以下载的插件进行一些控制,并确保它们能够协同工作,如果您想确保它可以正常工作。

如果您有两个插件引用同一个程序集的不同版本,只要程序集中没有任何重大更改,您就可以使它们都工作。您需要确保首先加载更新版本的程序集,然后Silverlight也将它用于引用程序集的旧版本的插件(请注意,此加载程序行为与它在桌面上的工作方式有很大不同.NET)。

如果引用程序集的不同版本中存在重大更改,那么您将无法使这两个插件都能正常工作。