小编典典

.NET 4 配置中的“useLegacyV2RuntimeActivationPolicy”有什么作用?

all

在将使用 SlimDX 并因此具有非托管代码的项目转换为 .NET 4.0 时,我遇到了以下错误:

混合模式程序集是针对运行时版本“v2.0.50727”构建的,如果没有其他配置信息,则无法在 4.0 运行时中加载。

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

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

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


阅读 125

收藏
2022-06-16

共1个答案

小编典典

经过一段时间(以及更多搜索),我找到了 Jomo Fisher
这篇博客文章

我们最近看到的一个问题是,由于支持并行运行时,.NET 4.0 改变了它绑定到旧混合模式程序集的方式。例如,这些程序集是从 C++\CLI
编译的程序集。当前可用的 DirectX 程序集是混合模式。如果您看到这样的消息,那么您就知道您遇到了问题:

混合模式程序集是针对运行时版本“v1.1.4322”构建的,如果没有额外的配置信息,则无法在 4.0 运行时中加载。

[剪辑]

对于应用程序来说,好消息是您可以选择通过设置 app.config 标志来回退到 .NET 2.0 时代的这些程序集绑定,如下所示:

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

所以看起来运行时加载混合模式程序集的方式已经改变。我找不到有关此更改的任何详细信息,也找不到这样做的原因。但该useLegacyV2RuntimeActivationPolicy属性恢复为
CLR 2.0 加载。

2022-06-16