我正在使用Managed Extensibility Framework开发一个宿主应用程序,它是针对.NET 4和构建在框架中的System.ComponentModel.Composition程序集构建的。我想支持使用.NET 3.5开发部件并以声明方式导出它们的能力。
由于导出属性是.NET 4中的新属性,因此无法通过.NET 3.5程序集引用,因此我不确定导出部件的最佳方法。有没有一种简单的方法可以在不实现使用其他机制来发现导出的新类型目录的情况下执行此操作?
答案 0 :(得分:2)
您可以为AppDomain.AssemblyResolve编写一个处理程序,它将在请求3.5版本时返回.NET 4版本的MEF。但是,只有在使用默认绑定逻辑找不到程序集时才会使用您编写的处理程序,因此您需要确保3.5 MEF DLL不可用,或者可能加载没有上下文的扩展程序集( see here)以防止它解析为该DLL。
答案 1 :(得分:0)
您可以使用Assembly Binding Redirect来针对.NET 3.5版本的MEF编译扩展,但让他们在运行时使用.NET 4版本。