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

Multiple versions of .NET on the same server(同一台服务器上的多个.NET版本)
本文介绍了同一台服务器上的多个.NET版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我一直知道在一台计算机(客户端或服务器)上运行多个版本的.NET Framework是可以的。This question,虽然有点老,但谈到了这一点。 然而,不久前,我的任务是创建一个新的ASP.NET应用程序,我试图决定是使用完整的.NET框架还是使用.NET Core,我遇到了来自Microsoft的this article。本文指出,如果我需要并行安装框架,我应该使用.NET Core。全文如下:

安装依赖于不同版本的应用程序 NET,我们推荐.NET Core。.NET核心提供了 在上安装不同版本的.NET Core运行时 同一台计算机。此并行安装允许多个服务 在同一台服务器上,每个组件都位于其自己版本的.NET Core上。

但是我认为没有.NET Core,框架的并行安装已经是可能的了。我错过了什么? 我问这个问题的原因是,我当前有一个使用.NET Framework 2.0的旧ASP.NET应用程序,而我现在正在开发一个使用.NET Core的应用程序。我遇到了一些问题,这些问题促使我考虑将.NET Core应用程序切换到完整的.NET Framework4.6,但Microsoft的那篇文章让我有点困惑。 问题是:我是否可以在同一台Windows 2008 R2服务器上同时运行两个应用程序(.NET Framework 2.0和4.6)而不会出现问题?如果是,那么那篇文章指的是什么? 最后一件事:我的两个应用程序(旧的和新的)都使用Crystal Reports。新应用程序可能需要比旧应用程序更新的Crystal Reports版本。我是否可以在同一台服务器上运行类似这样的Crystal Reports的不同版本?在这种情况下,我是否会像Microsoft文章所说的那样需要.NET Core?

谢谢

推荐答案

框架的并行安装不仅是可能的,而且是事实。NET1.0、2.0和4.0以上的版本都有单独的安装。但是:

  • .NET 3.0和3.5都使用2.0运行时,因此不是真正分开的。
  • 类似地,.NET4.5和所有更高版本都使用4.0运行时,因此彼此并不分开。使事情进一步复杂化的是,当您安装更高版本时,基础4.0运行时实际上是升级的。
  • 最后但并非最不重要的一点是,选择哪个框架版本来运行您的应用程序在.NET4.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应用程序是不可能的。如果(比方说)为.NET2.0安装了补丁,它将影响所有的.NET2.0、3.0和3.5应用程序,至少在二进制级别上是这样。您不能选择让某些应用程序受到修补程序的影响,而不让其他应用程序受到影响(尽管通常会为破坏兼容性的行为添加配置开关)。

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

这独立于框架,并且取决于Crystal Reports本身处理版本控制的方式。According to the manufacturer,答案是肯定的,适用于主要版本,但不适用于次要更新:

不同主要发布版本的并行安装 Crystal Reports Designer从Crystal Reports 9开始支持, 因为每个主要发布版本在不同的位置安装软件 目录。

您不需要.NET Core就可以并行安装不同的程序集版本。此外,即使您使用.NET Core应用程序的独立部署,它也很可能仍然是指计算机上的Crystal Reports的共享安装,而不是Crystal Reports的独立部署(我认为不存在这种情况;我甚至不确定.NET Core当前是否支持Crystal Reports)。

最后但并非最不重要的一点是:请注意,不再正式支持某些版本的.NET。关于支持哪些版本(以及在哪里)的策略非常复杂,这取决于框架是否是操作系统的一部分,但是detailed here。.NET4.6有一些非常糟糕的JIT编译器错误(已在4.6.1中修复),所以不管官方支持与否,你都不会想要使用它。如果您的服务器尚未安装.NET 2.0以上的任何版本,您也可以直接跳转到您的操作系统支持的最新版本(撰写时为4.8)。

这篇关于同一台服务器上的多个.NET版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)