【问题标题】:Multiple versions of .NET on the same server同一服务器上的多个 .NET 版本
【发布时间】:2023-03-06 15:31:01
【问题描述】:

所以我一直都知道可以在单台计算机(客户端或服务器等)上运行多个版本的 .NET 框架。 This question,虽然有点老了,但也谈到了这个。

然而,不久前,我的任务是创建一个新的 ASP.NET 应用程序,我试图决定是使用完整的 .NET 框架还是 .NET Core,我遇到了来自 Microsoft 的 this article。文章指出,如果我需要并行安装框架,我应该使用 .NET Core。这是完整的报价:

安装依赖于不同版本的应用程序 .NET,我们推荐 .NET Core。 .NET Core 提供并行 安装不同版本的 .NET Core 运行时 同一台机器。 这种并行安装允许多个服务 在同一台服务器上,每个服务器都在自己的 .NET Core 版本上。

但我认为如果没有 .NET Core,框架的并行安装已经成为可能?我错过了什么?

我问的原因是我目前有一个使用 .NET Framework 2.0 的旧 ASP.NET 应用程序,而我现在正在开发一个使用 .NET Core 的应用程序。我遇到了一些问题,让我考虑将 .NET Core 应用程序切换到完整的 .NET Framework 4.6,但那篇 Microsoft 文章让我有点困惑。

问题是:我能否在同一个 Windows 2008 R2 服务器上运行这两个应用程序(.NET 框架 2.0 和 4.6)而不会出现问题?如果有,那这篇文章指的是什么?

最后一件事:我的两个应用程序(旧的和新的)都使用 Crystal Reports。新应用程序可能需要比旧应用程序更新的 Crystal Reports 版本。我可以在同一台服务器上运行不同版本的 Crystal Reports 吗?这是我需要 .NET Core 的情况吗,就像 Microsoft 文章所说的那样?

谢谢

【问题讨论】:

    标签: c# asp.net .net asp.net-core crystal-reports


    【解决方案1】:

    框架的并行安装不仅是可能的,而且是事实。 NET 1.0、2.0 和 4.0 之后的所有版本都有单独的安装。然而:

    • .NET 3.0 和 3.5 都使用 2.0 运行时,因此并不是真正分开的。
    • 同样,.NET 4.5 和以上所有版本都使用 4.0 运行时,因此彼此不分离。更复杂的是,当您安装更高版本时,基本 4.0 运行时实际上已升级。
    • 最后但并非最不重要的一点是,选择哪个框架版本来运行您的应用程序已随 .NET 4.0 发生了变化。这方面的规则相当复杂,取决于安装的版本和应用程序配置;完整讨论请参见 this article

    对于你的问题,那么:

    我能否在 相同的 Windows 2008 R2 服务器没有问题?

    如果同时安装了 .NET Framework 2.0 和 4.6,则可以。假设没有特殊的配置设置,2.0 应用程序将在 2.0 框架上运行,但它也可以配置为使用 4.6 框架(它将自身呈现为 4.0 运行时)。

    如果是这样,那这篇文章指的是什么?

    这篇文章指的是这样一个事实,即完整的 .NET Framework 已经逐渐放弃了通过在次要版本(有时甚至是主要版本)之间没有分隔来完美分离并行安装的想法,而 .NET Core 具有通过允许独立部署加倍了这个想法。也就是说,不仅 .NET Core 1.0 和 .NET Core 2.0 应用程序可以共存,而不会像 .NET Framework 2.0 和 3.5 应用程序那样存在共享依赖关系的风险,甚至两个 .NET Core 1.0 应用程序也可以同时存在,而无需共享依赖项,这对于完整的 .NET Framework 应用程序来说是不可能的。如果(比如说)为 .NET 2.0 安装了补丁,它将影响所有 .NET 2.0、3.0 和 3.5 应用程序,至少在二进制级别上。您不能选择让某些应用程序受补丁影响而不影响其他应用程序(尽管通常会添加配置开关以防止破坏兼容性的行为)。

    最后一件事:我的两个应用程序(旧的和新的)都使用 Crystal Reports。 新应用程序可能需要更新版本的 Crystal Reports 比旧的应用程序。我能跑不一样吗 像这样的 Crystal Reports 版本在同一台服务器上?这是 在这种情况下,我需要像 Microsoft 这样的 .NET Core 文章说?

    这与框架无关,取决于 Crystal Reports 本身如何处理版本控制。 According to the manufacturer,答案是肯定的,对于主要版本而不是次要更新:

    并行安装不同的主要发行版 从 Crystal Reports 9 开始支持 Crystal Reports 设计器, 因为每个主要版本都以不同的方式安装软件 目录。

    您不需要 .NET Core 即可并行安装不同的程序集版本。更重要的是,即使你使用了 .NET Core 应用程序的自包含部署,它可能仍然是指机器上共享安装 Crystal Reports,而不是自包含部署 Crystal Reports(我不认为存在这样的事情;我什至不确定 Crystal Reports 当前是否支持 .NET Core)。

    最后但同样重要的是:请注意,某些版本的 .NET 不再受到官方支持。关于支持哪些版本(以及在哪里)的政策非常复杂,这取决于框架是否是操作系统的一部分,但detailed here。 .NET 4.6 有一些非常讨厌的 JIT 编译器错误(在 4.6.1 中修复),所以你真的不想使用它,官方支持与否。如果您的服务器尚未安装 2.0 之后的任何 .NET 版本,您也可以直接跳转到您的操作系统支持的最新版本(截至撰写本文时为 4.8)。

    【讨论】:

    • 感谢您的出色回答,但我错过了一个信息(虽然我可能错过了)。由于 Core 不共享依赖项,是否可以同时安装 .NET 4.5 和任何 Core 版本?
    • @CasperNybroe:是的——事实上,对于在 Windows 上使用 Visual Studio 的开发人员来说,这是正常的情况。 (虽然不是 .NET 4.5,它将是 .NET Full 的一些更新版本)。
    • 目前仍支持的最低版本是 .NET 4.5.2(而不是答案中的 4.6.2)。见Lifecycle FAQ
    • 实际上检查 TrevorJ 提供的链接,我们看到对 .Net 3.5 SP1 的支持持续了一段时间,并且在某种程度上还支持 .Net 2.0 SP2 和 3.0 SP2(还必须安装 .Net 3.5 SP1 )。我不确切知道这如何适合(优秀)答案的上下文,但为了广大读者,我只想留下这个评论。
    • 我编辑了我的答案,提供了更准确的支持信息,并链接到生命周期常见问题解答,它比 4.0 和 4.5.x 的弃用公告更详细。
    猜你喜欢
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多