我正在为dotnet 3.5应用程序编写插件,因此我的程序集需要是CLR2。有没有办法从我的CLR2代码里面加载和托管dotnet 4并调用dotnet 4代码?
答案 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程序集的源代码。