混合针对.NET 3.5的MEF部分和针对.NET 4.0的应用程序

混合针对.NET 3.5的MEF部分和针对.NET 4.0的应用程序,.net,.net-4.0,mef,.net,.net 4.0,Mef,是一个独立的项目(目前针对.NET 3.5),也是.NET 4.0框架的一部分 假设我创建了以.NET 3.5为目标的程序集,其中包含MEF部件。这些程序集将引用独立版本的System.ComponentModel.Component.dll 现在假设我创建了一个支持MEF的应用程序,目标是.NET4.0。此应用程序将引用.NET4.0框架附带的System.ComponentModel.Composition.dll。我能在此应用程序中使用上述MEF部件吗?不幸的是,这将不起作用,因为Syst

是一个独立的项目(目前针对.NET 3.5),也是.NET 4.0框架的一部分

假设我创建了以.NET 3.5为目标的程序集,其中包含MEF部件。这些程序集将引用独立版本的
System.ComponentModel.Component.dll


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

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