Tag: isolation

运行具有不同版本的依赖关系dll的插件的推荐方法是什么?

我有一个WCF插件服务,通过MEF加载插件并运行它们。 每个插件都是一个具有多个dll的目录,它实现了特定的接口。 我使用MEF( DirectoryCatalog )在同一个AppDomain中加载所有插件,并以通用方式运行它们(使用reflection)。 现在假设我有两个带有dll依赖项的插件: Plugin1 —-> Entities 1.0.0.1 Plugin2 —-> Entities 1.0.0.2 我在1.0.0.2中添加了一些新实体。 当我运行插件时,我得到一个偶然的错误,即新的实体在dll中不存在。 我猜错误发生,因为我在相同的AppDomain中运行代码,加载的第一个Entities.dll是将为我的所有插件提供服务的那个。 那么,如何在不创建新的appdomain的情况下运行隔离的每个插件? 有什么方法可以告诉MEF以某种方式加载所有插件依赖项? 我在网上看到了几个解决方案: 为每个插件创建一个新的appdomain – 我不想去那里 。 使用 – 当我第一次尝试它时,这不起作用,我不希望我的插件服务器更新每个程序集依赖项版本更改。 另外,我希望能够运行具有不同组件版本的插件。 用snk签署程序集 – 我还没有尝试这个,我不确定这个解决方案是否有效。 框架将如何知道他需要加载不同的程序集? 这与具有不同版本的程序集有何不同? 我是否需要以某种方式配置我的服务才能使其工作? 有没有人对我有更好的想法? 什么是运行隔离插件的推荐方法?