Managed Extensibility Framework既是一个独立项目(目前针对 .NET 3.5),也是 .NET 4.0 框架的一部分。
假设我创建了面向 .NET 3.5 且包含 MEF 部件的程序集。这些程序集将引用 System.ComponentModel.Composition.dll
的独立版本。
现在假设我创建了一个面向 .NET 4.0 且支持 MEF 的应用程序。此应用程序将引用 .NET 4.0 框架附带的 System.ComponentModel.Composition.dll
。我可以在此应用程序中使用上述 MEF 部件吗?
最佳答案
不幸的是,这不起作用,因为您只能通过构建 codeplex drop 生成 3.5 版本的 System.ComponentModel.Composition.dll,并且没有使用与官方 4.0 版本相同的 key 签名,因此 CLR 将同时加载两者程序集并将属性视为两个不同的属性。因此,假设应用程序使用 .Net 4.0 版本的 System.ComponentModel.Compsition.dll 并构造 Catalog/Container,它只会找到标记有 .Net 4.0 版本的属性的部分。
关于.net - 将面向 .NET 3.5 的 MEF 部件与面向 .NET 4.0 的应用程序混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1958067/