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