- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下三种场景(在exe的app.config文件中)有什么区别?
<startup>
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0" />
</startup>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0" />
</startup>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
我已经阅读了有关它的 MS 文档和一些博客,但我仍然不太清楚究竟发生了什么以及何时使用。
编辑
我遇到这样一种情况,第三方应用程序是使用 CLR 2(并且还使用旧版 COM)编译的,而我为应用程序所做的允许扩展是使用 CLR 4 编译的。因此,重新编译应用程序对我来说不是一个选项.我只需要知道这三种情况的影响。
最佳答案
useLegacyV2RuntimeActivationPolicy 属性有点逃避。将其设置为 true 允许 .NET 4 程序加载混合模式 (C++/CLI) 或 [ComVisible] .NET 程序集,这些程序集在注册表中明确声明它们需要运行时版本 2.0.50727。如果您没有这样的程序集,那将不会有任何区别,它们很少见。明智的做法是不要使用它,需要时您会收到一条错误消息。一个 FileLoadException,其消息如下所示:
Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
下一个明智的做法是重建此类程序集以面向 .NET 4。您要做的最后一件事是使用该属性。
如果您提供多个版本的 CLR,就像您在前两个代码片段中所做的那样,那么您将获得 EXE 在其 list 中要求的版本。最后一个强制 v4 版本。这意味着您可能会在不同的 .NET 运行时上运行仅在 CLR v2 上测试过的代码。这几乎总会有好结果,v4 与 v2 非常兼容。但他们确实借此机会修复了 v4 中的错误。您可能会不小心依赖于错误的行为。当然非常罕见。
关于.net - 使用 useLegacyV2RuntimeActivationPolicy 和多个 supportedRuntimes 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16404701/
我是一名优秀的程序员,十分优秀!