在转换使用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加载。