【问题标题】:Execute a method in a different .net framework version在不同的 .net 框架版本中执行方法
【发布时间】:2015-09-07 14:18:30
【问题描述】:

我正在使用第三方 COM 对象,出于某种原因,该对象仅适用于 .NET 版本 2.0 - 3.5。 尝试在更高版本中使用它会导致此 dll 中的一些方法中断。 我的控制台应用程序基于 .NET 4.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 对象的方法?

【问题讨论】:

  • 一个进程可以同时托管 CLRv2 和 CLRv4 运行时,其中每个运行时将另一个视为本机代码。我自己没有尝试过,所以我不能真正提供细节,但是David Broman 有一个博客在分析器开发的背景下讨论它(他提供了一个“免费测试工具”,可能可以作为一个例子,但是链接似乎已失效)。

标签: c# .net com clr


【解决方案1】:

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

【讨论】:

  • 嗨@tim-s 我已经试过了,它不起作用。如果控制台配置为 .NET 4,则辅助项目以 .NET 4 运行。尝试运行:System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion() 并查看结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 2015-12-19
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多