gpt4 book ai didi

.net - 使用 useLegacyV2RuntimeActivationPolicy 和多个 supportedRuntimes 有什么区别

转载 作者:行者123 更新时间:2023-12-01 10:54:11 27 4
gpt4 key购买 nike

以下三种场景(在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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com