同一服务器上的多个.NET版本

时间:2018-03-08 02:53:02

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

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

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

  

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

但我认为在没有.NET Core的情况下,已经可以并行安装Framework?我错过了什么?

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

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

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

谢谢

1 个答案:

答案 0 :(得分:9)

框架的并排安装不仅是可能的,而且是事实。 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进行完整讨论。

对于你的问题,那么:

  

我是否能够运行这两个应用程序(.NET framework 2.0和4.6)   相同的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的自包含部署(我不是认为存在这样的事情;我甚至不确定.NET Core目前是否支持Crystal Reports。

最后但并非最不重要:请注意,某些版本的.NET为no longer officially supported。这包括.NET 4.6 - 仍然正式支持的最低版本是.NET 4.6.2,requires Windows Server 2008 R2 SP1。 .NET 4.6有一些非常讨厌的JIT编译器错误,所以你真的不想使用它,官方支持或没有。如果您的服务器还没有安装任何版本的.NET 2.0,那么您也可以直接跳转到最新版本(撰写本文时为.NET 4.7.1)。