从CLR2调用CLR4代码

时间:2012-02-21 19:20:13

标签: c# .net .net-4.0

我正在为dotnet 3.5应用程序编写插件,因此我的程序集需要是CLR2。有没有办法从我的CLR2代码里面加载和托管dotnet 4并调用dotnet 4代码?

3 个答案:

答案 0 :(得分:2)

根据评论[更新]:

基本上,.NET运行时使用V 4.0学习并排加载多个版本的.NET运行时(例如V 2)。但是在V 4.0之前没有记录“.NET方式”来做到这一点......

如果你真的需要这样做:

将.NET 4部件实现为“进程外”COM服务器(或Web服务或使用其他形式的IPC,如共享内存),然后您可以在.NET 2中使用它。

答案 1 :(得分:1)

所以理智的答案是“你可能不能直接调用.Net 4.0 ......但你可以与它接口。”

以任何一种方式。包括COM,Web服务或称为“Inproc Sxs”的东西:

calling .net 4 from .net 3.5 via self hosted wcf service

底线: 是的,但您需要将.Net 4.0功能包装在进程外服务器中。

答案 2 :(得分:0)

不,不是没有做一些疯狂的事情。

您可以使用预处理程序指令(即#if NET_1_1)和多个项目文件来构建多个.NET版本。每个项目文件都需要为其目标版本设置一个值。

Elmah在a few places中执行此操作:

// All code in this file requires .NET Framework 2.0 or later.
#if !NET_1_1 && !NET_1_0

// ...

#endif // !NET_1_1 && !NET_1_0

这当然假设您可以访问引用的.NET 4.0程序集的源代码。