如何强制托管代码在.net 2.0的.net 4进程(SxS)下执行

时间:2012-01-30 20:53:23

标签: .net side-by-side sxs

在一些文章中,人们提到“显式运行sxs”。 它真的可能吗? 我读了几篇关于这个主题的文章:
http://msdn.microsoft.com/en-us/magazine/ee819091.aspx
http://blogs.msdn.com/b/dotnet/archive/2009/06/03/in-process-side-by-side-part1.aspx
http://msdn.microsoft.com/en-us/library/ee518876.aspx

但仍然不清楚是否可以强制执行在.net 4进程的较旧的.net版本下执行一段托管代码。

到目前为止,看起来唯一的COM组件可能需要较旧的.net,因此.net 4 clr将自动启动SxS执行。 有人可以解释这个问题吗?

1 个答案:

答案 0 :(得分:1)

使用编译器生成的CLR主机,不,我认为你不能这样做。

我相信您必须host the CLR yourself并在调用CorBindToRuntimeEx时明确指定要加载的CLR。因此,您希望通过指定v2加载一个CLR,另一个指定v4。

以前,你完全不能这样做,它会崩溃。

你不能说,“哦,我只想让这个方法在CLR v2中运行”。您的“托管代码”将位于不同的AppDomain中,因此您必须在两个AppDomain之间进行某种通信,例如远程处理。