Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# 在不同的.net framework版本中执行方法_C#_.net_Com_Clr - Fatal编程技术网

C# 在不同的.net framework版本中执行方法

C# 在不同的.net framework版本中执行方法,c#,.net,com,clr,C#,.net,Com,Clr,我使用的是第三方COM对象,出于某种原因,它只适用于.NET版本2.0-3.5。 试图在更高版本中使用它会导致此dll中的一些方法中断。 我的控制台应用程序基于.NET4.0,我不想为了让它工作而降级 我已经尝试过在app.config中添加旧版本支持等解决方案,如以下所示,但不起作用: <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0.30319" /

我使用的是第三方COM对象,出于某种原因,它只适用于.NET版本2.0-3.5。 试图在更高版本中使用它会导致此dll中的一些方法中断。 我的控制台应用程序基于.NET4.0,我不想为了让它工作而降级

我已经尝试过在app.config中添加旧版本支持等解决方案,如以下所示,但不起作用:

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0.30319" />
    <supportedRuntime version="v2.0.50727" />
</startup>

这只是一个猜测,但我认为这与CLR版本在2.0-3.5和4.0之间的变化有关


有没有办法在.NET 2.0的上下文中从.NET 4.0控制台应用程序中执行将使用此COM对象的方法?

我所知道的最简单的方法是创建一个使用.NET 2.0并进行所需调用的单独项目。例如


我所知道的做类似事情的最简单方法是创建一个单独的项目,使用.NET 2.0并进行所需的调用。例如


Hi@tim-s我已经试过了,它不起作用。如果控制台配置为.NET 4,则辅助项目将作为.NET 4运行。尝试运行:System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion(),然后查看结果。您好@tim-s我已经尝试过了,它不起作用。如果控制台配置为.NET 4,则辅助项目将作为.NET 4运行。尝试运行:System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion(),并查看结果。进程可以同时承载CLRv2和CLRv4运行时,其中每个运行时都将另一个运行时视为本机代码。我自己没有尝试过,所以我不能给出详细信息,但有一个博客在profiler开发的背景下讨论了它(他提供了一个“免费测试工具”,可能可以作为一个示例,但这个链接似乎已经失效)。进程可以同时托管CLRv2和CLRv4运行时,其中每个运行时将另一个运行时视为本机代码。我自己也没有尝试过,所以我无法给出详细信息,但我有一个博客在profiler开发的背景下讨论了它(他提供了一个“免费测试工具”,可能可以作为一个例子,但这个链接似乎已经失效)。