是否可以使用 MEF 或 MAF 等容器在 .net 3.5 应用程序中加载 .net 4.0 应用程序?
我知道 in.net 仅支持向后兼容性,这会对容器产生任何影响吗?
这是不可能的。当应用程序加载时,它将使用 CLR v2.0 (.NET 3.5)。.NET 4.0 程序集需要使用 CLR v4.0,并且由于应用程序不可能同时承载两个 CLR,因此无论程序集如何加载,都不会有太多运气。
最好的选择是使用 CLR v4.0 启动应用程序:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
编辑
根据乔恩·汉纳(Jon Hanna)的评论,事实证明"不可能"是一个太强硬的短语。有一种叫做"CLR 进程内并行"的东西,它是 .NET 4 的一部分。我仍然推荐我的原始答案,但更多信息可以在以下位置找到:
- 频道 9 - 里克·拜尔斯和西蒙·霍尔:CLR 4 - 并排进程 - 什么。如何。为什么。
- MSDN 杂志:进程内并行
- 分布式事务 - 加载多个 CLR 运行时 (InProc SxS) – 示例代码