我一直在埋头做各种各样的项目,显然微软一直在忙着做一些大的改变,这让我很困惑.ASP.NET Core第一次出现在我的雷达上是在go 年我安装Visual Studio 2017并go 创建一个新项目时,突然有了一些 Select .NET框架.净标准,以及.净核心.所以我仔细研究了一下,发现后两个在某种程度上是完整框架的缩写版本.我读了Scott Hanselman ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0的这篇文章,我也发现了这个,这让我远离了ASP.净核心:Choose between ASP.NET and ASP.NET Core.我的结论是"核心是新的,你可以继续使用完整的框架."所以我创建了一个新的ASP.NET MVC网站使用.NET Framework 4.6.2和Microsoft.AspNet.Mvc 5.2.3.

自从创建这个项目以来,我在MVC和Entity Framework中都发现了一些似乎有缺陷的地方,结果却发现Web上唯一提到它们的地方似乎是Core,而且这是唯一考虑修复它们的地方.

现在,今天,我试图查找System.Web.Mvc.Controller和System.Web.Mvc.JsonResult上的文档,除了核心文档之外,它都不见了.我最终还是用挖洞把它抬高了here%,上面说它已经不再维护了?

我对Core理解了this much%,并说,"好吧,我为什么要关心呢?我会继续做我正在做的事情,并在完成后再判断一下."但现在看来,4.6.2甚至不再受支持.有人能解释一下是怎么回事吗?我的Net 4.6.2/MVC 5.2.3项目现在还没写完就过时了吗?如果不是,为什么这些文件被退役并隐藏起来?我担心我的一些依赖项可能甚至不适用于Core或与Core不兼容.

推荐答案

(This answer is regularly updated whenever a new .NET announcement is made, and it has been updated with details of ASP.NET Core 3.0, .NET 3, and .NET 5)

微软需要好好教训一顿,因为过go 三年里微软的混乱程度超过了五年.NET内核/DNX,ASP.网络核心.NET标准.网5和其他.

(我要说的是,作为德夫迪夫的前FTE SE…("你好,来自16号楼!"))

  • ASP.NET又名"System.Web"现在已经死了.WebForms已死(万岁!)
  • ASP.NET MVC launched in 2008 was built on-top of ASP.NET, but bypassed most of the WebForms infrastructure.
    • ASP.NET MVC有自己的版本控制,与ASP.NETASP.NET Web API(以及ASP.NET Core)不同.你链接到了ASP.NET MVC 5的文档-this is not the same thing as 105.
  • 2012年推出的ASP.NET Web APIASP.NET MVC的sibling ,它也在ASP.NET的基础上构建,但有自己的类库(System.Web.Http),与ASP.NET MVC(System.Web.Mvc)没有太多共享.正在try 合并ASP.NET Web API服务与ASP.NET MVC web应用程序在同一个项目中是一个痛苦的练习.
  • ASP.NET MVC 5于2014年发布,是对ASP.NET MVC 4的更新.这与ASP.NET 5无关.
  • ASP.NET MVC 6人从未被释放.它被卷进了ASP.NET 5,然后变成了ASP.NET Core.它的目标是将ASP.NETMVC和ASP.NETWeb API组合到单个平台中.
  • ASP.NET Core作为ASP的改进设计于2016年推出.NET MVC 5,但不依赖System.Web.dll或任何(现在是遗留的)IIS依赖项(例如旧的请求管道,IHttpHandlerIHttpModule不再存在).
  • .NET Core is a new version of the CLR and BCL which is explicitly portable and runs on Windows, Linux and macOS.
    • 与Windows独有的full-fat.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 will be the new name of .NET Core after .NET Core 3 is released (.NET 5 is expected around late 2020).
    • .NET 5ASP.NET 5.0ASP.NET MVC 5有关.
    • 没有.NET Core 4.NET Framework 5.0.
  • "ASP.NET Core in .NET"似乎是专门针对.NET 5及更高版本的ASP.NET Core首次发布的最终名称.

我注意到"Core"是微软针对使用.NET Core的当前一代.NET平台的hot个品牌(即它们没有Windows依赖,因此是可移植的).(就像上世纪90年代,如果微软使用COM或ActiveX,比如Active Desktop、Active Channels、Actimates、Active Directory、ActiveSync等,他们是如何将"Active"附加到事物上的).

  • 此外,Entity Framework Core还缺少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 1ASP.NET Core 2目标.NET标准,而不是.NET核心-这意味着ASP.NET Core运行在.除了在Windows上运行外,还可以在Windows上运行NET Framework.NET内核.

我注意到,所有以前的.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 5).除了以下事实之外,本公告根本不涉及ASP.NET Core.NET5将完全支持在其上运行的ASP.NET Core 3.0个应用程序.

在2020年以Covid为主题的整个夏天,微软最终确定了.NET5和ASP.NET Core.截止到2020年10月,ASP.NETCore的NuGet包版本已经从3.1.x跃升到5.0.0--所以看起来ASP.NETCore的下一个主要发行版将是第5.x.x版,它建议将其第may版命名为"ASP.NET Core 5",尽管最近微软的博客文章建议这个名称将是"ASP.NETCore for.NET5"-尽管考虑到整个线程是通过"ASP.NETMVC5"而不是"ASP.NET5"在念力上创建的,我确信它的命名要么是"ASP.NETCore5",要么是"ASP.NETCorefor.NET5"不,先生-伊-鲍勃!

总结一下:

  • ASP.NET MVC 5:
    • ASP.NET MVC 5ASP.NET MVC 4的短命继承者.
    • 2014年,它与ASP.NET Web API 2部一起发布.
    • 它实际上运行在ASP.NET 4之上(即System.Web.dll的Net4.x版本).请注意,整个ASP.NET MVC库现在已经过时.
  • ASP.NET 5已下线并更名为ASP.NET Core,它包含内置的"ASP.NET MVC 5"功能.
  • ASP.NET Core 1ASP.NET Core 2都可以在任何一台上运行.NET核心(跨平台)或.NET框架(Windows),因为它的目标是.净标准.
  • ASP.NET Core 3现在只能在.NET Core 3.0上运行.
  • ASP.NET Core 4不存在,也从来没有.
  • ASP.NET Core 5存在(截至2020年8月),但它的官方名称似乎是"ASP.NET Core for.NET 5",而且它只在.NET 5上运行.

全部(按时间顺序排列):

  • ASP.NET 1 - 2001. 包括WebForms人.继续跑.NET Framework 1.0和1.1.System.Web.dll
  • ASP.NET 2.0 - 2005. 包括WebForms人.继续跑.NET框架2.0.System.Web.dll
  • ASP.NET MVC 1ASP.NET MVC 2-2008-2009.运行在ASP.NET 2.0之上.System.Web.Mvc.dll美元.
  • ASP.NET 4.0 - 2010. 包括WebForms人.继续跑.NET框架4.0.没有ASP.NET 3.0.System.Web.dll
  • ASP.NET MVC 3ASP.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的sibling 姐妹.也可以在没有ASP.NET 4.0的情况下运行.
  • ASP.NET MVC 6 - 2014-2015. 在达到发布候选状态后中止,并在2016年重新启动为ASP.NET Core MVC 1.0,这是ASP.NET Core 1的MVC和Web API组件.
  • ASP.NET 5 - 2014. ASP的主要重启.净described here.主要的变化包括合并MVC、网页和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 Core - 2016. 便携且小巧.NET运行时和类库.
  • .NET Standard - 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上运行).这是一个有争议的举动,因为这意味着现在没有ASP的升级路径.网络核心2.从x到ASP.网络核心3.x用于在上运行的应用程序.NET框架4.7.因为依赖关系不支持x.净核心,这意味着可能不会有一个.NET标准3.0.
  • .NET 5-2019年5月:微软发布了下一个版本的..NET Core 3.1之后的NET Core将不会被称为".NET Core 4.0"或".NET Core 5.0",而是会跳转到版本号5.0,放弃"Core"品牌,因此是".NET 5.0".
  • ASP.NET Core 3.0 on .NET 5-在2019年5月发布的.NET 5中,微软还表示ASP.NET Core 3.0应用程序将在.NET 5上运行.目前尚不清楚ASP.NET Core 2.x应用程序是否能够在.NET 5上原封不动地运行.
  • ASP.NET Core vNext on .NET 5-2020年8月:即将发布.NET 5Microsoft has bumped the version numbers of the NuGet packages for ASP.NET Core to 5.0.0.微软还没有正式提到这个新版本的ASP.NET Core被称为"ASP.NET Core 5",但我认为这已成定局.
  • ASP.NET Core for .NET 5 A more recent blog article from September 2020 suggests that Microsoft is referring to the next version of ASP.NET Core as "ASP.NET Core for .NET 5" (yes, that's a mouthful - at least it isn't as ambiguous as earlier names).

Timeline and block diagram

(我做这个的时候有点忘乎所以了…)

Diagram with a timeline of ASP.NET and a block diagram showing how the components of .NET Framework, ASP.NET and ASP.NET MVC come together

Asp.net相关问答推荐

Azure DevOps 构建管道正在发布旧的/缓存的构建工件

在具有多个项目(API/服务/数据等)的解决方案中编写 SignalR 服务的最佳方法是什么?

我可以强制刷新我的样式表文件吗?

无法为媒体类型application/x-www-form-urlencoded生成样本

指定的 CGI 应用程序遇到错误,服务器终止了进程

取消选中时 ASP.NET CheckBox 不会触发 CheckedChanged 事件

在 Asp.net 中通过 Button 的 CommandArgument 传递多个参数

多行文本框多个换行符

HTTP 错误 503.该服务在简单的 ASP.NET 4.0 网站下不可用

为什么aspx文件会返回404(找不到页面)

SimpleMembership 与 ASP.NET MVC 4 中的自定义数据库架构

使 Web.config 转换在本地工作

应该如何使用 RedirectToRoute?

HttpResponse.End 或 HttpResponse.Close 与 HttpResponse.SuppressContent

不同域的登录页面

覆盖静态方法

您可以从 web.config 文件中的其他位置提取 log4net AdoNetAppender 的 connectionString 吗?

重新生成designer.cs

您的下一个 ASP.NET 项目的 Select 是什么:Web 窗体还是 MVC?

Appdomain 回收究竟是什么