多个版本的.NET CLR同时运行

时间:2009-03-11 14:30:09

标签: .net assemblies clr

假设我在Windows下运行的.NET用户应用程序(.exe)是在.NET Framework 3.0版(VS2008)中编译的。如果该应用程序加载使用.NET Framework 2.0版(VS2005)在另一台计算机上编译的另一个.NET程序集(.dll),那么加载的程序集是否会使用现有的3.0运行时(它将以向后兼容模式运行)?或者.NET Framework 2.0运行时是否会加载到系统的进程空间中,我们现在有两个并行运行的.NET运行时?

断言:这不是使用VS2008多目标。

3 个答案:

答案 0 :(得分:7)

没有.NET 3.0 CLR。 .NET 3.0和3.5都使用.NET 2.0 CLR。​​

当然,如果您的.NET 3.0应用程序使用.NET 3.0功能,则需要安装.NET 3.0。

答案 1 :(得分:1)

如果它位于相同的处理空间中,如您所概述的那样,它将在3.0下运行。如果你想要两个不同的CLR,你将需要创建一个服务边界(Web服务或WCF在这里工作正常 - 显然不是WCF for 2.0)并从另一个应用程序调用该服务。

答案 2 :(得分:1)

.NET运行时版本通常是向后兼容的,因此3.0运行时将托管2.0程序集(更不用说3.0与2.0的运行时基本相同)。在任何情况下,CLR的两个版本都无法加载到同一进程中。