我一直不遗余力地从事各种项目的工作,显然Microsoft一直在忙于进行一些重大更改,这使我感到困惑。去年我安装Visual Studio 2017并开始创建新项目时,ASP.NET Core首次引起了我的注意,突然选择了.NET Framework,.NET Standard和.NET Core。因此,我仔细研究了一下它们,发现后两者在某种程度上是完整框架的缩写版本。我读了Scott Hanselman的ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0帖子,也发现了这一点,这使我远离了ASP.NET Core:Choose between ASP.NET and ASP.NET Core。我的观点是“Core是新的,您可以继续使用完整的框架。”因此,我使用.NET Framework 4.6.2和Microsoft.AspNet.Mvc 5.2.3创建了一个新的ASP.NET MVC网站。
自创建该项目以来,我发现MVC和Entity Framework中似乎都存在一些错误,只是发现在Web上唯一提及它们的地方似乎是在Core中,并且这是唯一被视为已修复的地方。
现在,今天,我正在尝试查找有关System.Web.Mvc.Controller和System.Web.Mvc.JsonResult的文档,除了Core文档下的文档已消失。我终于把here挖了一下,说它不再被维护?
我了解this much关于Core的问题,并说:“好吧,我为什么要关心?我将继续做我正在做的事情,并在完成后再检查一下。”但是现在看来,甚至不再支持4.6.2。有人可以解释发生了什么吗?我的NET 4.6.2 / MVC 5.2.3项目现在已经过时了吗?如果不是,为什么将这些文档退休并隐藏起来?我担心我的某些依赖项可能甚至无法用于Core或与Core兼容。
(每次发布新的.NET公告时,都会定期更新此答案,并且已使用ASP.NET Core 3.0,.NET 3和.NET 5的详细信息更新了)
在过去的3年5年中,Microsoft需要对.NET Core / DNX,ASP.NET Core,.NET Standard,.NET 5和其他方面的困惑状况给予良好的掌声。
(我是说,作为DevDiv的前FTE SE ...(“嗨,来自16号楼!”))
ASP.NET aka“System.Web”现在已死。 WebForms已死(呼啦!)
ASP.NET MVC 于2008年推出,是在ASP.NET的基础上构建的,但绕过了大多数WebForms基础结构。
ASP.NET MVC 具有自己的版本控制,与 ASP.NET 和 ASP.NET Web API (以及 ASP.NET Core )分开。您已链接到 ASP.NET MVC 5 的文档-这与 ASP.NET 5 不同。
ASP.NET Web API 是2012年推出的 ASP.NET MVC 的同级产品,它也是在 ASP.NET 的基础上构建的,但具有自己的类库(System.Web.Http
)与共享很多内容。ASP.NET MVC (System.Web.Mvc
)。在同一个项目中尝试将ASP.NET Web API服务与ASP.NET MVC Web应用程序结合在一起是一件痛苦的事情。
ASP.NET MVC 5 于2014年启动,是对 ASP.NET MVC 4 的更新。它与 ASP.NET 5 无关。
我确实注意到ASP.NET MVC 5是where we had both System.Web.Mvc
and Microsoft.Web.Mvc
namespaces - which is confusing。幸运的是,这是短暂的,与今天无关。
ASP.NET MVC 6 从未发布。它已卷入 ASP.NET 5 ,然后成为 ASP.NET Core 。其目标是将ASP.NET MVC和ASP.NET Web API组合到一个平台中。
ASP.NET Core 作为ASP.NET MVC 5的改进设计于2016年启动,但不依赖System.Web.dll
或任何(现在)的IIS依赖(例如,不再存在旧的请求管道,IHttpHandler
和IHttpModule
) 。
请注意, ASP.NET Core 的类库的根 namespace 现在是Microsoft.AspNet
而不是System.Web
。这让我感到困惑。这意味着将项目从 ASP.NET MVC 和 ASP.NET WebAPI 升级到ASP.NET Core并非易事,尽管其 Controller 和中间件的基本体系结构相同。
NETt核心是CLR和BCL的新版本,可明确移植并且可在Windows,Linux和macOS上运行。
相对于Windows专有的全脂
.NET Framework ,
.NET Core 1.0 和 .NET Core 2.0 的基类库被认为是贫血的。
通过 .NET Core 3.0 以及WinForms,WPF和.NET Framework的其他组件的开源,.NET Core现在可以作为Windows中.NET Framework的替代品,用于新的应用程序开发。
.NET 5 将是 .NET Core 3 发布之后的.NET Core的新名称(预计.NET 5将于2020年末推出)。
.NET 5 与ASP.NET 5.0 或 ASP.NET MVC 5 绝对无关。
没有 .NET Core 4 也没有 .NET Framework 5.0 。
“用于.NET 5的ASP.NET Core的”似乎是专门针对 .NET 5 的第一版ASP.NET Core的最终名称。
我注意到,“Core”是Microsoft在当前可与.NET Core一起使用的.NET平台上的热门品牌(即它们没有Windows依赖关系,因此可移植)。 (就像Microsoft在1990年代使用COM或ActiveX时如何将“Active”粘贴到事物上一样,例如Active Desktop,Active Channel,ActiMate,Active Directory,ActiveSync等)。
另外, Entity Framework 核心仍然缺少Entity Framework 6的许多功能,这是因为基本上是重写,但是最终会达到同等水平。
因为当前有许多.NET运行时和BCL(.NET Framework,.NET Core,UWP,Xamarin(使用Mono),Unity等),所以Microsoft引入了 .NET Standard ,这基本上是可移植类库的重新启动概念:Visual Studio项目的目标是通用功能的已知子集,而不是特定的实现。 (我只是希望他们将版本号从4开始以匹配.NET Framework,而不是从1.0
开始,因为那让我重新考虑了2001。)-但重要的部分是 ASP.NET Core 1 和 ASP.NET Core 2 目标是.NET Standard而不是.NET Core-这意味着ASP.NET Core除了可以在.NET Core之上运行之外,还可以在Windows的.NET Framework之上运行。
我注意到,所有以前的.NET跨平台兼容性技术现在都已过时(包括针对Compact Framework子集,可移植类库,甚至是Visual Studio中的“共享项目”),因为它们是为其他版本的.NET设计的,不再存在,例如.NET Compact Framework,XNA,Silverlight和Windows Phone 7的子集。
在2019年5月,Microsoft announced ".NET 5"。简而言之, .NET Framework 被替换为 .NET Core ,.NET Core 3.0之后的下一个.NET Core版本将被命名为 .NET 5 )。除了.NET 5将完全支持在其上运行的ASP.NET Core 3.0 应用程序这一事实外,该公告与 ASP.NET Core 完全无关。
在2020年整个以Covid为主题的夏天中,Microsoft完成了.NET 5和ASP.NET Core的定稿。截至2020年10月,ASP.NET Core的NuGet软件包版本已从3.1.x跃升至5.0.0-因此,似乎ASP.NET Core的下一个主要版本将成为5.x.x
版本,这表明其发行版可能命名为“” ASP.NET Core 5 “,尽管最近的Microsoft博客文章建议该名称为” .NET 5的ASP.NET Core“-尽管考虑到整个线程是出于对” ASP.NET MVC 5“vs” ASP.NET 5”我敢肯定,将其命名为“ASP.NET Core 5”或“ASP.NET Core for .NET 5”绝对不会造成任何混淆,没有sir-ee-bob!
综上所述:
ASP.NET MVC 5 :
ASP.NET MVC 5 是 ASP.NET MVC 4 的短暂后继。 它与一起在2014年发布。ASP.NET Web API 2 。它实际上是在 ASP.NET 4 (即.NET 4.x版本的System.Web.dll
)之上运行的。请注意,整个 ASP.NET MVC 库现在已过时。
ASP.NET 5 已停产,并更名为 ASP.NET Core ,它包含内置的“ASP.NET MVC 5”功能。 ASP.NET Core 1 和 ASP.NET Core 2 可以在.NET Core(跨平台)或.NET Framework(Windows)上运行,因为它的目标是.NET Standard。 ASP.NET Core 3 现在仅在 .NET Core 3.0 上运行。 ASP.NET Core 4 不存在,也永远不存在。 ASP.NET Core 5 存在(截至2020年8月),但是其正式名称似乎是“.NET 5的ASP.NET Core”,并且仅在 .NET 5 上运行。
所有这些(按时间顺序):
ASP.NET 1 -2001。包括 WebForms 。在.NET Framework 1.0和1.1上运行。 System.Web.dll
。 ASP.NET 2.0 -2005。包括 WebForms 。在.NET Framework 2.0上运行。 System.Web.dll
。 ASP.NET MVC 1 和 ASP.NET MVC 2 -2008-2009。跑在ASP.NET 2.0之上。 System.Web.Mvc.dll
。 ASP.NET 4.0 -2010。包括 WebForms 。在.NET Framework 4.0上运行。没有 ASP.NET 3.0 。 System.Web.dll
。 ASP.NET MVC 3 和 ASP.NET MVC 4 -2010-2013。跑在ASP.NET 4.0之上。 System.Web.Mvc.dll
。 ASP.NET Web Api 1 -2012。在之上ASP.NET 4.0 。 System.Web.Http.dll
。 ASP.NET MVC 5 -2013。只是对 ASP.NET MVC 的另一个更新。在之上运行ASP.NET 4.0 ,但在OWIN下也可以在没有System.Web.dll
的情况下独立运行。 ASP.NET Web API 2 -2013。同级到 ASP.NET MVC 5 。也可以在OWIN下不使用的ASP.NET 4.0 来运行。 ASP.NET MVC 6 -2014-2015。在达到Release Candidate状态后中止,并在2016年重新启动为 ASP.NET Core MVC 1.0 ,这是 ASP.NET Core 1 的MVC和Web API组件。 ASP.NET 5 -2014。ASP.NETdescribed here的重大重启。主要更改包括合并MVC,Web页和Web API,以及删除了 WebForms 。 ASP.NET 5达到了候选发布状态,但随后更名为 ASP.NET Core 。从未有过 ASP.NET 6 。 ASP.NET Core 1 -2016。在 .NET Framework 4.5 或 .NET Core 1.0 上运行。 NET核心-2016。可移植且最小的.NET运行时和类库。 .NET标准-2017。一种使程序针对一组通用功能的方式,该功能将出现在所有.NET实现中(.NET Framework 4.5和更高版本,.NET Core 2.0和更高版本,Xamarin等)。 ASP.NET Core 2 -2017-2018:我们今天的位置。在 .NET Framework 4.6.1 或 .NET Core 2.0 上运行。 (截至2018年底,现在有ASP.NET Core 2.1)。 ASP.NET Core 3 -In late October 2018 Microsoft announced ASP.NET Core 3.0 will now only run on the upcoming .NET Core 3.0(因此它将不再在.NET Framework 4.7.x上运行)。这是一个有争议的举动,因为这意味着由于不支持依赖项,对于在.NET Framework 4.7.x上运行的应用程序,现在没有从ASP.NET Core 2.x到ASP.NET Core 3.x的升级路径。 .NET Core还没有,这意味着可能不会有.NET Standard 3.0。 .NET 5 -2019年5月:Microsoft宣布 .NET Core 3.1 之后的下一个.NET Core版本不会被称为“.NET Core 4.0”或“.NET Core 5.0”,但会跳至版本号5.0并放弃“Core”品牌,因此放弃“ .NET 5.0 ”。 .NET 5上的ASP.NET Core 3.0 -在2019年5月 .NET 5 的公告中,Microsoft还声明ASP.NET Core 3.0应用程序将在.NET 5上运行。目前尚不清楚ASP.NET是否在核心2.x应用程序将能够在.NET 5上未经修改地运行。 NET.NET 5上的ASP.NET Core vNext -2020年8月:即将发布
.NET 5 ,
Microsoft has bumped the version numbers of the NuGet packages for ASP.NET Core to 5.0.0
。 Microsoft尚未正式/正式将这个新版本的ASP.NET Core称为“ASP.NET Core 5”,但我认为这已成定局。 NET.NET 5的
ASP.NET Core。2020年9月,最近的博客文章建议Microsoft将ASP.NET Core的下一个版本称为“.NET 5的 ASP.NET Core。”(是的,这是一口-至少它不像以前的名字那样模棱两可)。
时间线和框图
(我很生气使这个...)
我是一名优秀的程序员,十分优秀!