I\'ve been keeping my head down working on various projects and apparently Microsoft has been busy making some big changes and it\'s confusing the hell out of me. ASP.NET Co
(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)
Microsoft needs a good slapping for the amount of confusion over the past 3 years 5 years over .NET Core / DNX, ASP.NET Core, .NET Standard, .NET 5 and the rest.
(and I'm saying that as a former FTE SE in DevDiv... ("hi from building 16!"))
System.Web.Http
) that didn't share much with ASP.NET MVC (System.Web.Mvc
). Attempting to combine an ASP.NET Web API service with an ASP.NET MVC web-application in the same project is an exercise in pain.System.Web.dll
or any (now-legacy) IIS dependencies (e.g. the old request pipeline, IHttpHandler
and IHttpModule
no longer exist).
Microsoft.AspNet
and not System.Web
. This was a source of confusion for me. This means that upgrading projects from ASP.NET MVC and ASP.NET WebAPI to ASP.NET Core are non-trivial, despite their fundamental architecture of Controllers and Middleware being the same.I note that "Core" is Microsoft's hot branding for the current generation of .NET platforms which work with .NET Core (i.e. they have no Windows dependencies and so are portable). (Just like how Microsoft stuck "Active" onto things in the 1990s if they used COM or ActiveX, e.g. Active Desktop, Active Channels, ActiMates, Active Directory, ActiveSync, etc).
Because there are many .NET runtimes and BCLs currently available (.NET Framework, .NET Core, UWP, Xamarin (which uses Mono), Unity and others) Microsoft introduced .NET Standard which is basically a reboot of the Portable Class Library concept: where Visual Studio projects target a known subset of common functionality instead of a specific implementation. (I just wish they'd start the version numbering from 4 to match .NET Framework instead of starting at 1.0
because that got me thinking about 2001 all over again.) - but the important part is that ASP.NET Core 1 and ASP.NET Core 2 target .NET Standard instead of .NET Core - which means that ASP.NET Core runs on top of the .NET Framework on Windows in addition to running on top of .NET Core as well.
I note that all previous .NET cross-platform compatibility techniques are now obsolete (including targeting Compact Framework subsets, Portable Class Libraries, and even "Shared Projects" in Visual Studio), as they were meant for other editions of .NET which no-longer exist, such as .NET Compact Framework, XNA, Silverlight, and Windows Phone 7's subset.
In May 2019, Microsoft announced ".NET 5". In short, the .NET Framework is being replaced with .NET Core, and the next version of .NET Core after .NET Core 3.0 will be named .NET 5). This announcement does not concern ASP.NET Core at all, other than the fact that .NET 5 will fully support ASP.NET Core 3.0 applications running on it.
Throughout the Covid-themed summer of 2020 Microsoft finalized .NET 5 and ASP.NET Core. As of October 2020, ASP.NET Core's NuGet package versions have jumped from 3.1.x to 5.0.0 - so it looks as though the next major release of ASP.NET Core will be versioned 5.x.x
which suggests its release may be named "ASP.NET Core 5" though recent Microsoft blog articles suggest the name will be "ASP.NET Core for .NET 5" - though given that this whole thread was created out of the confusion over "ASP.NET MVC 5" vs "ASP.NET 5" I'm sure that naming it either "ASP.NET Core 5" or "ASP.NET Core for .NET 5" will absolutely not be confusing at all, no sir-ee-bob!
System.Web.dll
). Note that the entire ASP.NET MVC library is now obsolete.System.Web.dll
.System.Web.dll
.System.Web.Mvc.dll
.System.Web.dll
.System.Web.Mvc.dll
.System.Web.Http.dll
.System.Web.dll
under OWIN.(I got carried away making this...)
This answer will try to focus only on ASP.NET MVC 5, and as little ASP.NET Core as possible.
Product Lifecycle
Microsoft still supports this, and there is not yet an end-of-life announced,
https://www.asp.net/support
Framework/Product Retirement
ASP.NET MVC 4 July 1st, 2019
ASP.NET MVC 5
So if you like, keep using it. Remember that VB6 and classic ASP users are still being supported by Microsoft.
.NET Framework 4.5.2 and above are still supported if you do check Microsoft documentation on product lifecycle.
Maintenance
However, you do need to notice ASP.NET MVC 5 is on maintenance mode, as development resources are almost all on ASP.NET Core right now.
You do get,
If you monitor the relevant NuGet packages, you should notice that even recently Microsoft updates them to remediate security vulnerabilities and so on.
The notice you saw from Microsoft Docs, in fact emphasizes on the very first sentence "We’re no longer updating this content regularly." That makes perfectly sense as ASP.NET MVC 5 is rock solid so you should not expect new materials to be added any more.
You said "Since creating that project, I found what seemed like some bugs in both MVC and Entity Framework only to find that the only mention of them on the web seems to be in Core and that's the only place they're being considered being fixed."
Well, it really depends on what "bugs" you are talking about. Like I said earlier, security related issues are still being patched, but bugs with workarounds or functional limitation are least likely to get fixed. It is an open source project, so if you really want, you can fix the issues on your own, as last resort.
On new features side, Microsoft does backport some features from ASP.NET Core, such as dependency injection, new configuration system, to simplify migration at certain degree. But don't expect much.
Migration
Do consider migrating to ASP.NET Core if you can.