将面向.NET 3.5的MEF部件与面向.NET 4.0的应用程序混合

时间:2009-12-24 11:54:40

标签: .net .net-4.0 mef

Managed Extensibility Framework既是一个独立项目(目前面向.NET 3.5),也是.NET 4.0框架的一部分。

假设我创建了包含MEF部件的.NET 3.5程序集。这些程序集将引用System.ComponentModel.Composition.dll的独立版本。

现在假设我创建了一个支持MEF的应用程序,目标是.NET 4.0。此应用程序将引用.NET 4.0框架附带的System.ComponentModel.Composition.dll。我是否可以在此应用程序中使用上述MEF部件?

1 个答案:

答案 0 :(得分:9)

不幸的是,这不起作用,因为您只能通过构建codeplex drop来生成3.5版本的System.ComponentModel.Composition.dll,并且没有使用与官方4.0版本相同的密钥签名,因此CLR将加载两者程序集并将属性视为两个不同的属性。因此,假设应用程序正在使用.Net 4.0版本的System.ComponentModel.Compsition.dll并构建目录/容器,它将只查找使用.Net 4.0版本的属性标记的部分。