【问题标题】:Loading 2 versions of the same plugin with Silverlight / MEF使用 Silverlight / MEF 加载相同插件的 2 个版本
【发布时间】:2010-04-13 08:26:04
【问题描述】:

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

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

例如:

-插件A引用silverlight toolkit dll的1.0版本,插件B引用同一个dll的2.0版本。

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

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

我对 Silverlight 程序集加载进行了一些研究,我相信一次只能加载给定程序集的一个版本。 所以我不知道如何处理。

对此有什么想法吗?

【问题讨论】:

    标签: silverlight assemblies version mef


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您提供详细信息。这几乎是我在实验时所意识到的。不幸的是,当您无法提前知道将需要哪些插件以及何时需要时,它对于真正动态的场景还不够好。我想我只希望在 Silverlight 5 中引入 AppDomain 的概念..
    • @Clems 您的插件是如何加载的?不是必须从您的服务器下载吗?所以你不能对它们进行一些控制吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多