在转换使用Slimdx并因此具有未管理代码的项目时,我遇到了以下错误:

混合模式组件是针对运行时版本的" v2.0.50727"版本构建的,不能在没有其他配置信息的情况下加载4.0运行时。

谷歌搜索给了我解决方案,即将其添加到应用程序配置:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

我的问题是,什么是useLegacyV2RuntimeActivationPolicy正在做?我找不到任何文档。

答案

一段时间后(还有更多搜索),我发现此博客条目乔莫·费舍尔(Jomo Fisher)。

我们最近看到的一个问题之一是,由于支持并排运行时,.NET 4.0改变了与较旧的混合模式组件结合的方式。这些组件是从C ++ \ CLI编译的组件。当前可用的DirectX组件是混合模式。如果您看到这样的消息,那么您就会知道您已经遇到了问题:

混合模式组件是针对运行时版本的" v1.1.4322"构建的,并且不能在没有其他配置信息的情况下加载4.0运行时。

[狙击]

应用程序的好消息是,您可以选择通过设置app.config标志这样的选择来重回.NET 2.0 ERA对这些组件进行绑定:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>
</startup>

因此,看起来运行时加载混合模式组件已更改的方式。我找不到有关此更改的任何详细信息,或者为什么完成了。但是useLegacyV2RuntimeActivationPolicy属性恢复为CLR 2.0加载。

来自: stackoverflow.com