.NET Core is the Future of .NET 

Scott Hunter [MSFT]


We introduced .NET Core 1.0 on November 2014. The goal with .NET Core was to take the learning from our experience building, shipping and servicing .NET Framework over the previous 12 years and build a better product. Some examples of these improvements are side-by-side installations (you can install a new version and not worry about breaking existing apps), self-contained applications (applications can embed .NET, so .NET does not need to be on the computer), not being a component of the Windows operating system (.NET ships new releases independent of the OS schedule) and many more. On top of this, we made .NET Core open source and cross platform. 

.NET Core 1.0 was primarily focused on high performance web and microservices. .NET Core 2.0 added 20K more APIs and components like Razor Pages and SignalR, making it easier to port web applications to .NET Core. And now .NET Core 3.0 embraces the desktop by adding WinForms, WPF and Entity Framework 6 making it possible to port desktop applications to .NET Core.  

After .NET Core 3.0 we will not port any more features from .NET Framework. If you are a Web Forms developer and want to build a new application on .NET Core, we would recommend Blazor which provides the closest programming model. If you are a remoting or WCF Server developer and want to build a new application on .NET Core, we would recommend either ASP.NET Core Web APIs or gRPC, which provides cross platform and cross programming language contract based RPCs). If you are a Windows Workflow developer there is an open source port of Workflow to .NET Core 

With the .NET Core 3.0 release in September 2019 we think that all *new* .NET applications should be based on .NET Core. The primary application types from .NET Framework are supported, and where we did not port something over there is a recommended modern replacement. All future investment in .NET will be in .NET Core. This includes: Runtime, JIT, AOT, GC, BCL (Base Class Library), C#, VB.NET, F#, ASP.NET, Entity FrameworkML.NET, WinForms, WPF and Xamarin. 

.NET Framework 4.8 will be the last major version of .NET Framework. If you have existing .NET Framework applications that you are maintaining, there is no need to move these applications to .NET Core. We will continue to both service and support .NET Frameworkwhich includes bug, reliability and security fixes. It will continue to ship with Windows (much of Windows depends on .NET Framework) and we will continue to improve the tooling support for .NET in Visual Studio (Visual Studio is written on .NET Framework). 


New applications should be built on .NET Core. .NET Core is where future investments in .NET will happen. Existing applications are safe to remain on .NET Framework which will be supported. Existing applications that want to take advantage of the new features in .NET should consider moving to .NET Core. As we plan into the future, we will be bringing in even more capabilities to the platform. You can read about our plans here. 


Leave a comment

  • Sam Covington
    Sam Covington

    Deploying asp.net core isn’t as smooth as in the full framework, which is basically xcopy deploy. In addition to lacking xcopy deploy, a reverse proxy is required, and MS doesn’t make one available.
    While this is understandable on linux, it makes less sense on the windows platform which we would think would have an advantage.
    Is there any thought being given to making deploy easier on windows?

  • Avatar
    John Fedak

    WCF is a show stopper for us.  Our comm stack is both hugely stable (and took us years to get to that point) and has to interact with external SOAP services.   Porting that to something else is a non-starter for us.

  • Avatar
    Duc Thuan Nguy

    Please give WCF a second thought. It is probably the most requested feature in this comment section. Moving to another stack is not an option for many who need to maintain enterprise applications, and staying with a dead framework (no matter what you say about .NET 4.8, it is dead) is equally bad.

  • Yuri Bond
    Yuri Bond

    How about package/assembly hell that .NET Standart and .NET Core brings with them?
    In good old days of .NET Framework you write your application against particular version of framework, install this framework on target machine with installer provided by microsoft and it works. All assemblies that are part of .NET Framework were istalled and later updated by microsoft.

    With .NET Core you only get some assemblies with installer, rest you need to destribute yourself as if they 3-rd party libraries even though they start with System… . They never updated automaticaly and it becomes problem for writer of software to update them.

    Then the package hell. All assemblies distributed as separate packages even though they should be part of framework. 
    Packages have non-rigid dependensies (like  X >= 1.0) but at the same time, assemblies inside packages have strong references.
    This lead to constant need of Binding redirects. So Microsoft took worst from Java, where jars do not have strong name, and implemented this with extra steps through binding redirects. 

    package/assembly hell in .NET Core is much worse now then it ever was with .NET Framework.
    It maybe a future, but very painful one.

  • Avatar

    You said: “All future investment in .NET will be in .NET Core. This includes: Runtime, JIT, AOT, GC, BCL (Base Class Library), C#, VB.NET, F#, ASP.NET, Entity Framework, ML.NET, WinForms, WPF and Xamarin. “ 
    Does that mean no investment for UWP? What’s the best option to build a NEW LONG TERM LOB desktop application on Windows 10? 
    Powerful WPF but without clear investment from Microsoft to modernised this old platform, for example no touch friendly controls for devices like your own Surface?
    UWP? But Microsoft doesn’t clearly say that it’s the future…
    In 2020, you should have 1 billion Windows 10 in production (plenty of them with a touch screen), superb tools like visual Studio, a very good language: C#, a new powerful framework: .NET 5 but nothing to develop modern and robust application for your main platform: Windows. Do I miss something here?

    • Avatar
      Gavin Williams

      [Edited] Their lack of clarity is a bit confusing. They are saying Windows is now the platform and UWP is a UI framework. But then they say UWP will use .net core instead of .net native and coreclr. UWP has been THE PLATFORM for the past few years and it has suddenly been replaced by .net core. What’s the point of UWP now ? I don’t get it.

    • Olu

      People are really angry that things are quite mixed up at Microsoft. As for UWP, the future is in Windows UI (WinUI), and it’s a bait for the lovers of WPF and Windows Forms. As long as they don’t hear UWP, they are kinda happy. But what they don’t know is that WinUI, XAML Islands, Fluent Design are the way to go with anything native UI at Microsoft. So, UWP is going nowhere. It is alive and well. It only got a new purpose. Tell me, when you’ll be coding with WinUI or XAML Island in WPF, are those still WPF controls that you can call in your code-behind? Not really, or better, let’s say no. You would be calling WinUI elements in your code-behind. Eventually, the differences between UWP, WPF and Windows Forms would all be blurred out, as long as WinUI would be what you’ll be dealing with. There are changes to the runtime too to make these changes happen. Maybe when the next Visual Studio after VS2019 comes out and with .NET 5, we would see how this plays out. For now, my personal choices when it comes to “new” apps development are WinUI/UWP, SPA/PWA (cross-platform) web app (using Blazor, a custom one I’ve been working on that can be integrated with any of Angular/React/Vue/Knockout/etc. that have inbuilt data-binding feature, if Blazor doesn’t satisfy me and because it is not released yet and I don’t really like how Angular/React/Vue/etc. assume to know everything you wanna ever do, or whatever fits what I want to achieve, and with ASP.NET Core server-side) and Xamarin.Forms (when PWA can’t do what I wanna achieve on a more performant cross-platform side). Btw, of course, I would use any of Angular, React, Vue or Blazor if a business client or workplace demands it. I would also do native Android, WPF, Windows Forms, etc. development. if a business cleint or workplace demands it.

      • Olu

        I make predictions out of excitement, but it seems Microsoft is good at disappointing me 😀 But seriously, about UWP, I strongly feel it’s not going away, even though its features are being brought into WPF and Windows Forms. See UWP as Microsoft’s own main and futuristic native app development platform. See Xamarin.Forms as Microsoft’s cross-platform app development platform because it supports Android, iOS and UWP too, among others. So, it’s more like…if you want to target Windows only with your app, use UWP/WinUI (because, even WPF and Windows Forms will be using WinUI but would not be as good as UWP), and if you want to let your app go native cross-platform, use Xamarin.Forms (and you’ll still get UWP too). It’s that simple or confusing.

    • Tom McDerp
      Tom McDerp

      They have committed to it at this point.  Microsoft does not care about abandoning customers or developers. This isnt a new problem. Cough silverlight. The folks that jumped on service fabric w wcf really got taken for a rogering.

  • Neil Walker
    Neil Walker

    I thought I read yesterday that version 5 was the single and only future version of  .net, kind of implying full and core were being merged. So migratingfrom full to 3 might be a bit premature given it might be different again when we get there next year…

    It also said the word Core was being removed from the name … 

  • Morten Jonsen
    Morten Jonsen

    WCF over ASP.NET Core Web APIs – isn’t that MUCH slower than using NetTcpBinding?
    All new .Net applications should be using .Net Core 3? What about aspnet core for vb?
    .NET Framework 4.8 will be the last major version of .NET Framework.” I have way to large applications to port, so sad no new framework for those 🙁

  • Hugo Ferreira
    Hugo Ferreira

    My thougths about this: * This is a PR way to end up .NET Framework and by the way Mono. * .NET Framework, .NET Core, Mono, Xamarim, .NET Standard, it’s a mess and this is a way to clean up and invest in a single runtime, now with more customer based because .NET Core implements WinForms and EF6 but with a minority guy out of scope (WebForms, etc …). * For me .NET should be a monolitic runtime that should be the standard implementation that runs in several OS (.NET Core) and on top of that nuget packages for specific things that may depends on other libraries or OS: DataSet (this should never be on the standard), WinForms, etc … This way would be even possible to have WebForms on .NET 5 This move shows that .NET Standard failed miserably and .NET Core was a wrong move, thought by theoretical guys.

  • Avatar
    Bill Loytty

    I agree with the need for WCF, and I will raise you System.Messaging (MSMQ). I am literally in planning meetings right now for a new application, and I would love to switch, but I have a metric buttload of legacy apps, all built on msmq. 

  • Avatar
    David Hunter

    Any news on allowing C++/CLI to target .NET Core. Hopefully your not going to leave all of us hanging given that there is no viable alternative to C++/CLI for calling native C++ from .NET ( please don’t suggest PInvoke! )

  • Avatar
    Greg Sohl

    My previous comments were feature specific. But I should have started with – Thank You! Getting us back to one framework is where we need to be. The general direction is right. Now, how to avoid leaving the important pieces behind just because they aren’t in the news anymore. The reason for that – they just work, and need to continue to.

  • Avatar
    Jon Miller

    Thanks for throwing Web Forms developers under the bus and recommending Blazor as a replacement. Something that is basically only experimental at this point. Time will tell whether it is another Silverlight. Stupid move not supporting Web Forms when you support Windows Forms and WPF.

  • Tom McDerp
    Tom McDerp

    “If you are a remoting or WCF developer and want to build a new application on .NET Core, we would recommend either ASP.NET Core Web APIs or gRPC (Google RPC,”
    Then you have failed to listen to your customers. I adivse you to go f yourself. Because that is what you are telling partners and enterprise customers with millions of dollars invested in wcf. The backlash will cost Microsoft with this attitude and abandonment.

  • Avatar
    christos karras

    This means we need a migration plan for any .Net Framework feature and library that won’t be ported to .Net Core. There should be a centralized document (on docs.microsoft.com and/or github) listing .Net Framework features/libraries and their status for .Net Core:
    – Already available, without breaking changes
    – Alternative available, but there are breaking changes (Name the alternative and reference a document for migration guidance)
    – Planned for .Net Core 3.x
    – Won’t be available

    Just a few examples I can quickly think of:
    – WCF
    – ASP.Net WebForms
    – GAC
    – Entity Framework 6
    – Owin
    – Asp.Net MVC
    – Asp.Net Web Api
    – COM Interop
    – Windows Forms
    Yes I know some of these are/will be available but I know it from searching on forums, UserVoice, etc, not from any cannonical source. There needs to be an official centralized exhaustive list with all this information, so that we can start planning and refactoring affected apps.
    Also, if there are too many unsupported features/libraries on .Net Core, it may be implausible to migrate legacy apps to .Net Core, so it’s more likely these applications will get stuck on .Net Framework 4.8 and Microsoft will need to keep supporting .Net Framework 4.8 for decades, until all these legacy applications have been rewritten (if that ever happens)

  • Avatar
    Mottor Demottor

    Make ONE Exe for console applications possible. I do not want to hear questions like: “Why are you deliver 50 DLLs? Java has only one jar.”
    Isn’t possible to remove all unused code from all DLLs and make one exe?

      • Avatar
        Gavin Williams

        At least until Visual Studio is rewritten for .net core, so maybe around 2030? Who knows. If they can rewrite Visual Studio by then, I don’t see anyone else having a good excuse as to why they haven’t moved off .net framework.

        • Avatar
          christos karras

          According to https://www.tiobe.com/tiobe-index/ COBOL’s current popularity is close to R and even above TypeScript. It’s plausible .Net 4.8 will have a similar fate in 2050 if Microsoft doesn’t provide a realistic migration path.
          If there’s no migration path, then the only option will be a costly rewrite, which won’t happen if there’s no benefit.
          For example, there should be an intermediate version of .Net Framework that supports ALL of .Net’s 4.x libraries AND .Net Core’s 3.x libraries, to allow progressive migration of .Net framework features to more modern alternatives. It would also allow re-implementing some legacy libraries as adapters over .Net Core alternatives. Then eventually there could be a unified .Net, but .Net 5 is too soon, perhaps .Net 7.
          It’s utopic to believe that an organization will simultaneously convert its code to replace (for example) WCF, ASP.Net Web Forms, and COM Interop, that’s a pretty good “excuse” if you want to call it an excuse.

    • Przemysław Wasylko
      Przemysław Wasylko

      Frankly speaking I am annoyed and sick with all that ‘It will continue to work great!’ mantra. No one will rewrite millions dolar worth system to gRPC. Instead of providing easier way to move to .net core by enabling WCF Service Host in .net core we, loyal MS customers who invested heavily in WCF because years ago on another conference we heard it is a way to go, we are offered with a dead end.No newer C# version goodies on 4.8. No newer netstardards on .NET 4.8. So next time please rethink ‘it will contnue to work gereat’ statement.Thanks.

  • Avatar
    SuperCocoLoco .

    Without Visual Basic in ASP.NET Core or in Blazor is imposible to migrate to .NET Core or .NET 5. I know C# but i prefer Visual Basic to code, more clear code and more readable and if i want to use a C-Style language i use C++, Javascript, etc. But for .NET I refuse to code in C#. I don’t like it and I will never use it.

    • Avatar
      Elliott Ward

      I find myself in a similiar situtation, I perfer Visual Basic over C#, and my company and I no longer have faith in Microsoft’s “it will continue to work great” statements. Look at all these technologies we have invested in WCF, Silverlight, .Net Standard and so many others only to be left abandoned and wishing we have choosen a vendor with more integerity to it’s users.

  • Avatar

    Does this mean that Web Forms code won’t be able to run on .NET 5? If not – I’m not sure what the licensing situation is for the .NET Framework source code, but is there any prospect of a community project to get the Web Forms code running within v5 if MS isn’t going to do it officially?

    • Avatar

      WCF isn’t strictly web, though, is the point.  No one is going to invest in a new system when the old system was abandoned via confusing messaging and dysfunctional developer relations, is the point.  Investments have already been made and budgets do not exist to jump onto the new shiny ball, is the point.
      Also, if you read carefully, no one is complaining about Silverlight but are referencing it as the defacto example of poor product handling and subsequent terrible developer relations.
      All that said, open sourcing all of these products would solve a lot of problems and shut up a lot of grieving developers. 
      Is the point. 😆

      • Avatar
        Sami Al Khatib

        I wasn’t speaking about rewriting huge existing systems. As stated before, in the opening post and by many commentens, full .NET-Framework is going to live on and can always be used to develop new and existing applications.

    • Przemysław Wasylko
      Przemysław Wasylko

      Dear SamiMixing WCF with Silverlight and Web Forms in one bag prove how *little* you know about those technologies.
      While Silverlight and Web Forms are strict Microsoft vision on how to do certain things, WCF is server side technology for backend development which follows industry WS-* standards, open stardards, developed Microsoft, IBM and other bodies. Your statement is completely misleading readers.> Those technologies never followed web standards like ASP.NET WebApi didtaking above into consideration you completely have no idea about matter you are trying to respond to

      • Avatar
        Sami Al Khatib

        Dear fellow developer, 

        I wasn’t mixing anything, I just know that people used to love WCF services with Silverlight, because they can be used like plug in play in those applications. In fact, I have been working and writing WCF services with SOAP and REST for a while and I know there are some companies that baked those protocols and that there is an old, legacy, not maintained, W3C definition of those “standards”. My point was not to say to jump to the latest shiny technology, but that those technologies are not advancing anymore and there is no need to make them compatible when the full dotnet framework is gonna exist forever because of all the existing applications. Before you decide to say that people know “little to nothing”, sit back and think properly again. 

      • Avatar
        Sami Al Khatib

        Dear fellow developer, I wasn’t mixing WCF with Silverlight nor with Web Forms. I just know people started using those together, since I worked on WCF Services using SOAP and REST + Silverlight Frontends. While you are right that a few companies backed WCF and WS-*, it has never been a widley spread standard and was abandoned rather quickly while other standards lived on. JSON was already heavily used when WCF was introduced in 2008 but WCF natively used XML. I hope you get the idea now.

    • Avatar
      Jon Miller

      Hey everyone, Sami rewrote his 5 line hello world app. Why can’t you rewrite your millions of lines of code? Don’t confuse new with better. Web Forms works better than ASP.NET Core for intranet apps like the one that I’m working on. Microsoft is telling Web Forms developers to use Blazor, an unreleased product that is barely alpha. The post Web Forms way of doing things’s problem has alway be a lack of UI controls. That hasn’t changed for the past 10 years. ASP.NET MVC was a dumbing down of what they already had. For all practical purposes, it was just a rip off of Ruby On Rails. The ASP.NET team is doing a horrible job IMHO. It is the worst part of the platform.

      • Avatar
        Sami Al Khatib

        Have you heard about Javascript / ECMA Script for frontend development by any chance? I am sorry that you have to work on a code base with million lines of code, where the main framework used is web forms, that must be horrible. I wasn’t confusing new with better while in fact I wrote intranet applications using Core WebApi with windows authentication and dedicated frontends. For me it worked like a charm and I can promise you those application were not just displaying “Hello World!”. The ASPNET team is doing a great job, don’t put your anger and fear of learning something new on Software you don’t know how to use. 

  • Avatar
    Nick K

    This is extremely disturbing.  Each “long term support release” of .net core is only supported for 3 years and .net core is the future?  I work on an application that has a 2 year release cycle for a new version … Can someone explain to me how .net core is the future when I still have paying customers running 10 and 20 year old versions of my software?  Are you basically saying that the future is in disposable crappy smartphone apps that get updated every week and users uninstall after getting bored with them?

  • Avatar
    Will Woo

    So, show us an example of a Core/WinForm app with a treevew, and some other controls. Describe how that app is deployed, updated, etc.
    Based on this article: figuring out win development’s future is like trying to find faces in the smoke from Chernobyl.

  • Avatar
    Michael Taylor

    How does this play out for environments where you have no control over the runtime? For example SQL Server supports managed code in the database and SSIS relies on components written in managed code. SSIS script tasks are compiled as well. In order to build any of these today you have to target the version of .NET that the SSIS runtime is using. Moving forward is SSIS (and SQL) going to support .NET Core? What is the timeframe for this? How will existing components/scripts work that still rely on Framework? Can they run side by side?

  • selvakumar palanisamy
    selvakumar palanisamy

    WS security is not supported by WCF on .NET Core. Having no support for this is a major set back for us, most of our existing web services requires this security in order to consume them.
    For reference:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://tmnas.com">
    <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">
    <wsse:UsernameToken xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
    <wsse:Password Type="wsse:PasswordText">XXXXXX</wsse:Password>

  • Avatar
    Mark Fonnemann

    For those of still developing strictly desktop applications, the lack of a cross-platform UI toolkit/framework in .NET 5 is going to be really frustrating. At the very least, I don’t understand why Mono’s port of WinForms can’t be leveraged as at least a starting point for this effort.

  • Avatar
    Nicolas Torre

    Hi Scott; First of all thanks for the information. As developers we found out that debugging MVC core applications in a windows environment with IIS demands too much effort compared to debugging MVC.net. Same thoughts about (file system) deploying.

  • Joseph Rufft
    Joseph Rufft

    ASP.Net Web Forms are a must in .Net Core or .Net 5.  Blazor an unreleased experimental framework sounds like a risky choice and a possible waste of time and money.  Web Forms are mature, solve problems and work.  University’s might be behind on recent trends, but they still teach ASP.Net Web Forms in their curriculum.  WCF is also vital!
    This is so disappointing! 

  • Avatar
    Pete Wilson

    In October 2018 you said “We will make sure that .NET Framework always supports the latest networking protocols, security standards, and Windows features.”. Of course, we knew the .Net Framework was dead then (suggest reading The Cluetrain Manifesto). Does the fact that .Net Framework 4.8 is the last major version mean that support for new Windows features, etc. will no longer happen?

  • Rod Macdonald
    Rod Macdonald

    Nice article, it’s always good to see where things are from 30,000 feet! I do however continue to be concerned about the goals in terms of UI, or rather, I continue to be unclear it’s direction in relation to .NET. Now it’s clear ASP.NET continues the HTML paradigm. It’s really good to hear Mike Harsh talk about WinForms continuity moving forwards with .NET 3, and I think most folks understand what that can do/can’t do and we can park that up, but the rest comes across as a muddle that needs clearing up. We’ve got WPF, Xamarin Forms and the rightly or wrongly maligned UWP. I wish these were all just XAML and that XAML was an extension of HTML (and a C# rather than a markup implementation is fine with me), but it’s currently just too confusing and we’re losing cycles. And if I’m building a new app from scratch, I’m  really not clear, or more importantly unconvinced regarding direction, what is it I’m supposed to start with?

    A web UI and a desktop UI are enough to contend with and I really hoped following .NET back in 2002 we were going to end up with one UI stack. One’s a peach, two’s OK but one + three’s a crowd!

    • Avatar
      Steve Naidamast

      I agree…

      I worked on a major MVC project back in 2010. In terms of efficiency and feasibility for the actual project, it was in my opinion a complete disaster. Since then, Microsoft has continued to promote this stupid paradigm thereby increasing the complexity of developing web applications substantially and to the point where Microsoft web development is a complete mess.

      Though I am retired, I am still developing and keeping abreast of the current trends. As a result, I continue to see the same Redmond endeavors that undermine the overall Microsoft Development Community at large with Microsoft’s insane lurching about in the dropping of support for perfectly good technologies in place of newer ones that seemingly only go backwards in terms of ease-of-use and development efficiency.

      If the Development Community wants to stop this then it must stop allwoing itself to be cajoled into using these new releases that Microsoft continues to shove down everyone’s proverbial throats.

      When I worked with the mainframes many years ago no one thought of continuously introducing new technologies to the market as it would have completely disrupted the running of businesses. With microcomputers this restraint was abandoned as a result of the comparatively easier way to implement new technologies while culturally businesses accepted the disruptions. However, such technologies have matured to such a point that these constant traumas to professional developers are simply no longer warranted or even desired.

      If so much is going to be Open Sourced than as it is suggested by the expectations of Microsoft, maybe the internals developers should take the .NET Framework and rebuild it to their own needs instead of relying on Microsoft, which especially under CEO Nadella, has become so completely unreliable and even destructive…

    • Avatar
      ingmar pappel

      I totally agree. All these new web technologies are full of “tag soup” similar to Classic ASP (and this is bad). ASP.NET WebForms has clear separation of UI and code and is widely used in business solutions. Please port that!

  • S Kumar
    S Kumar

    how to create table if table not exists to existing database in ef core ?

    we don’t use migration because our existing databases are with clients devices and want to create additional tables to their databases after updates for feature extensions…

    there was an option like Context.DbEntity.Create(); in ef6 but not getting in ef core to do so…

    I used the below but it also not creating tables which doesn’t exist…

    var databaseCreator = (Database.GetService() as RelationalDatabaseCreator);
    catch (Exception ex)