【发布时间】: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 有一个博客在分析器开发的背景下讨论它(他提供了一个“免费测试工具”,可能可以作为一个例子,但是链接似乎已失效)。