Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C.NET3.5程序集访问.NET4.0方法(针对4.0框架的应用程序(CLR))_C#_.net_Reflection - Fatal编程技术网

C# 从C.NET3.5程序集访问.NET4.0方法(针对4.0框架的应用程序(CLR))

C# 从C.NET3.5程序集访问.NET4.0方法(针对4.0框架的应用程序(CLR)),c#,.net,reflection,C#,.net,Reflection,我有一个实用程序集Reg.dll,它是使用.NET3.5目标框架构建的 Reg.dll由一些使用target 3.5 target framework的应用程序使用,而其他以4.0为目标的较新应用程序由于版本限制,升级3.5应用程序目前不是一个选项,但最终会发生。我假设这意味着Reg.dll中的代码在运行时将在4.0或3.5 CLR上下文中运行,具体取决于应用程序目标框架 现在,我想让Reg.dll检测它是否在4.0或3.5 CLR中运行,如果不是4.0,我可以假设它在4.0 CLR中运行,如果

我有一个实用程序集Reg.dll,它是使用.NET3.5目标框架构建的

Reg.dll由一些使用target 3.5 target framework的应用程序使用,而其他以4.0为目标的较新应用程序由于版本限制,升级3.5应用程序目前不是一个选项,但最终会发生。我假设这意味着Reg.dll中的代码在运行时将在4.0或3.5 CLR上下文中运行,具体取决于应用程序目标框架

现在,我想让Reg.dll检测它是否在4.0或3.5 CLR中运行,如果不是4.0,我可以假设它在4.0 CLR中运行,如果它在4.0 CLR中运行,则执行仅限4.0的方法Microsoft.Win32.RegistryKey.FromHandle

一位同事建议构建两个程序集,一个针对3.5,另一个针对4.0,并在运行时动态加载相应的程序集。这听起来像是可行的,但是我怀疑这也可以通过使用System.Reflection特性来检测这个特定方法的存在,然后以某种方式动态调用它来实现


这是可能的,还是我最好选择多条装配路线?我将用作模型的代码片段/引用也会很有帮助,因为我以前没有在.NET的这方面做过很多工作。

使用System.Reflection功能听起来更好,部署麻烦更少。您将无法在运行时在2.0 CLR上加载4.0程序集,您将得到一个异常。@Furgan-这是我的想法,如果可能的话,还有我的首选路线。你这样做了吗?正在查找MSDN以外的任何有用的引用以供实现。@Daniel-在这种情况下,我从未尝试在2.0 CLR上加载4.0程序集。您确定在4.0上下文中运行的3.5程序集在默认情况下不会调用4.0方法吗?我现在不能检查,但我记得以前有过类似的问题,我会得到MissingMethodException。