在将使用 SlimDX(因此具有非托管代码)的项目转换为 .NET 4.0 时,我遇到了以下错误:
混合模式程序集是针对运行时版本“v2.0.50727”构建的,如果没有附加配置信息,则无法在 4.0 运行时中加载。
谷歌搜索给了我解决方案,即将其添加到应用程序配置中:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
我的问题是,什么是useLegacyV2RuntimeActivationPolicy
正在做?我找不到任何有关它的文档。
经过一段时间(和更多的搜索),我发现这个博客条目 http://blogs.msdn.com/jomo_fisher/archive/2009/11/17/f-scripting-net-4-0-and-mixed-mode-assemblies.aspx作者:乔莫·费舍尔。
我们最近看到的问题之一是,由于支持并行运行时,.NET 4.0 改变了它绑定到旧混合模式程序集的方式。例如,这些程序集是从 C++\CLI 编译的程序集。当前可用的 DirectX 程序集是混合模式。如果您看到这样的消息,那么您就知道您遇到了问题:
混合模式程序集是针对运行时版本“v1.1.4322”构建的,如果没有附加配置信息,则无法在 4.0 运行时中加载。
[Snip]
对于应用程序来说,好消息是您可以选择通过设置 app.config 标志来回退到这些程序集的 .NET 2.0 时代绑定,如下所示:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
所以看起来运行时加载混合模式程序集的方式已经改变。我找不到有关此更改的任何详细信息,也找不到这样做的原因。但是useLegacyV2RuntimeActivationPolicy
属性恢复为 CLR 2.0 加载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)