是否可以使用MEF加载同一组件的不同版本?

时间:2011-02-10 23:34:06

标签: silverlight mef composition

我有一种情况,在2个不同的模块(Xaps)中包含相同的程序集(比如Common.dll)。通过相同的程序集,我的意思是具有相同名称空间和类但是类/操作的不同实现的程序集。

现在这两个模块都将放在一个shell应用程序中,并通过downloadcatalog下载它们各自的xaps。两个xaps都将包含一个Common.dll,但具有不同的实现。

我尝试使用不同的CompositionContainers,每个模块都需要一个模块,希望单独的容器能隔离模块及其依赖关系。没工作。 令人惊讶的是,它所做的是使用第一个下载的Common.dll实例。这与通常相同的组件覆盖第一个组件并使用最新加载的组件不同,这给了我一线希望。

compositioncontainer具有ReleaseExports的功能。这对我有帮助吗?

Coneceptually,我认为如果我们顺序满足导入然后释放,每个模块应该获得正确的Common.dll操作的实例。

谢谢!

1 个答案:

答案 0 :(得分:1)

您是否尝试过为程序集strong name?这应该确保依赖关系被解析为与您编译的程序集完全相同的程序集。