C# 在不同的.net framework版本中执行方法
我使用的是第三方COM对象,出于某种原因,它只适用于.NET版本2.0-3.5。 试图在更高版本中使用它会导致此dll中的一些方法中断。 我的控制台应用程序基于.NET4.0,我不想为了让它工作而降级 我已经尝试过在app.config中添加旧版本支持等解决方案,如以下所示,但不起作用: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" /
<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开发的背景下讨论了它(他提供了一个“免费测试工具”,可能可以作为一个例子,但这个链接似乎已经失效)。