我一直在努力处理各种项目,显然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的文档,除了核心文档下的内容已消失。我终于把它here挖了,上面说它不再被维护了?
我了解this much关于Core的问题,并说:“好吧,我为什么要关心?我将继续做我正在做的事情,并在完成后再检查一下。”但是现在看来,甚至不再支持4.6.2。有人可以解释发生了什么吗?我的NET 4.6.2 / MVC 5.2.3项目现在已经过时了吗?如果不是,为什么将这些文档退却并隐藏起来?我担心我的某些依赖项可能甚至无法用于Core或与Core兼容。
答案 0 :(得分:73)
(每当发布新的.NET公告时,该答案就会定期更新,并且已更新了ASP.NET Core 3.0,.NET 3和.NET 5的详细信息)>
过去三年来,Microsoft需要对.NET Core / DNX,ASP.NET Core,.NET Standard,.NET 5和其他方面的混乱状况给予良好的掌声。
(我是说,作为DevDiv的前FTE SE ... (“来自16号楼的嗨!” )
System.Web.Http
),与 ASP.NET MVC (System.Web.Mvc
)共享的程度不高。在同一个项目中尝试将ASP.NET Web API服务与ASP.NET MVC Web应用程序结合在一起是一件痛苦的事情。System.Web.dll
或任何(现在为旧的)IIS依赖项(例如旧的请求管道,IHttpHandler
和IHttpModule
不再存在)。
Microsoft.AspNet
,而不是System.Web
。这让我感到困惑。这意味着将项目从 ASP.NET MVC 和 ASP.NET WebAPI 升级到ASP.NET Core并非易事,尽管其控制器和中间件的基本体系结构相同。我注意到,“ Core”是Microsoft的 hot 品牌,它是与.NET Core一起使用的当前.NET平台的代名词(即它们没有Windows依赖关系,因此是可移植的)。 (就像Microsoft在1990年代使用COM或ActiveX时如何将“ Active”固定在事物上一样,例如Active Desktop,Active Channels,ActiMate,Active Directory,ActiveSync等)。 -另外,实体框架核心仍然缺少实体框架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 Compact Framework,XNA,Silverlight和Windows Phone 7的子集等不再存在的.NET。
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 。 (ASP.NET Core 4可能会在那时发布)
System.Web.dll
的.NET 4.x版本)上运行的。平台 ASP.NET MVC 现在已过时。System.Web.dll
。System.Web.dll
。System.Web.Mvc.dll
。System.Web.dll
。System.Web.Mvc.dll
。System.Web.Http.dll
。System.Web.dll
独立运行。(我被带走了……)
答案 1 :(得分:7)
此答案将尝试仅专注于ASP.NET MVC 5,并尽可能减少ASP.NET Core。
产品生命周期
Microsoft仍然支持此功能,并且尚未宣布终止寿命,
框架/产品报废
ASP.NET MVC 2019年7月1日
ASP.NET MVC 5
因此,如果您愿意,请继续使用它。请记住,Microsoft仍支持VB6和经典ASP用户。
如果确实要检查产品生命周期上的Microsoft文档,则仍支持.NET Framework 4.5.2及更高版本。
维护
但是,您确实需要注意ASP.NET MVC 5处于维护模式,因为目前开发资源几乎全部位于ASP.NET Core上。
你知道,
如果您监视相关的NuGet程序包,则应注意,即使在最近,Microsoft也对其进行了更新,以修复安全漏洞等。
您从Microsoft Docs看到的通知实际上强调了第一句话:“我们不再定期更新此内容。”这完全是有道理的,因为ASP.NET MVC 5坚如磐石,因此您不应期望再添加任何新材料。
您说:“自创建该项目以来,我发现MVC和Entity Framework中似乎都存在一些错误,只是发现在Web上唯一提及它们的地方似乎是在Core中,这是它们唯一存在的地方被认为是固定的。”
嗯,这实际上取决于您在说什么“错误”。就像我之前说的,与安全相关的问题仍在修补中,但是具有变通办法或功能限制的错误最不可能得到修复。这是一个开源项目,因此,如果您确实需要,可以作为最后的解决方法自行解决问题。
在新功能方面,Microsoft确实从ASP.NET Core移植了一些功能,例如依赖项注入,新的配置系统,以在一定程度上简化迁移。但是不要期望太大。
迁移
如果可以的话,请考虑迁移到ASP.NET Core。
答案 2 :(得分:0)
我发现维基百科中 this article 简介中的这个片段是对此处提供的 the selected answer 的精彩答案的一个很好的总结。同样起源于这篇 Microsoft 的博客文章:https://devblogs.microsoft.com/dotnet/introducing-net-5/
(我会尽可能将提到的每项技术链接到其自己的维基百科文章,以供进一步阅读。)
<块引用>ASP.NET MVC 的最终版本:2018 年 11 月 28 日。ASP.NET Core 此后发布,统一了 ASP.NET、ASP.NET MVC、ASP.NET Web API 和 {{3} (仅使用 Razor 页面的平台)。 MVC 6 由于 Core 被放弃,预计不会发布。 Core 目前计划并入“ASP.NET Web Pages 5”。