gpt4 book ai didi

.net - 使用在旧版本 .NET 框架中编译的程序集会影响整体性能吗?

转载 作者:行者123 更新时间:2023-12-04 02:46:42 25 4
gpt4 key购买 nike

假设我们有两个程序集:

  • Foo.Logic(在 .NET 2.0 框架上编译)
  • Foo.Application(在 .NET 4.0 框架上编译)具有引用和使用编译的 Foo.Logic。

  • 它是否对 Foo.Application 性能有影响(或有任何其他缺点)?

    最佳答案

    在您在问题中描述的情况下,一切都将 Just Work™ 没有任何问题。

    .NET 4.0 应用程序会将 .NET 2.0 库直接加载到 .NET 4.0 运行时环境中。除非您明确要求,否则它不会使用并行执行。网络上有很多关于此的错误信息或不清楚的陈述,因此在评估您阅读的内容时要小心。

    我终于遇到了this article ,这证实了 Jon Skeet 在他的回答中所说的话。文章特别说明(强调):

    In-Proc SxS does not solve the compatibility problems faced by library developers. Any libraries directly loaded by an application--either via a direct reference or an Assembly.Load--will continue to load directly into the runtime and AppDomain of the application loading it. This means that if an application is recompiled to run against the .NET Framework 4 runtime and still has dependent assemblies built against .NET 2.0, those dependents will load on the .NET 4 runtime as well. Therefore, we still recommend testing your libraries against all version[s] of the framework you wish to support. This is one of the reasons we have continued to maintain our high level of backward compatibility.



    但是,如果您对更多的基本细节感兴趣,值得一提的是,CLR 4.0 版引入的新功能之一是能够在单个文件中同时运行多个版本的运行时过程。这叫做 "In Process Side-by-Side Execution" (或者“Inproc SxS”,如果你很酷的话),并且是一个非常强大的工具。您可以阅读更多相关信息 here在 CLR 团队的博客上。

    以下是一些用于演示目的的漂亮图片:



    请注意用于在 .NET 2.0 之上构建 .NET 3.0 和 3.5 版本的“分层蛋糕”模型。这意味着它们都可以并排运行而不会出现任何问题。但是其他版本的隔离会产生问题。

    但是,如上所述,.NET 4.0 通过并行执行解决了这个问题:



    当然,这主要适用于涉及 COM 和与 Outlook 等外部应用程序互操作的情况,但它仍然是一个非常酷的功能。

    但无论哪种方式,您都不应该发现这种方法有任何问题,无论是兼容性、性能还是其他任何问题。

    关于.net - 使用在旧版本 .NET 框架中编译的程序集会影响整体性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216599/

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