.NET Core Roadmap

This post was written by Scott Hunter.

It has been about two weeks since we shipped .NET Core / ASP.NET Core 1.0. The team has used the past two weeks to take a deep breath, and is now getting started on planning what is coming next. We have seen a lot of .NET Core SDK downloads and significant feedback. Please keep the feedback coming.

Here is a rough timeline of how things might look going forward. Note that these are the targeted dates that the team are currently working towards but may change.

1.0.1 (~August 2016)

We are actively monitoring the 1.0 release for issues to include in a first patch (1.0.1) release of the .NET Core SDK. There is no scheduled date for this patch update but early August is likely. Here is a list of the top issues we are investigating:

  • Performance improvements in dotnet build which will improve ASP.NET Core publishing times.
  • Updates to the dotnet new templates for F# so they use the latest alpha of F# on .NET Core
  • Miscellaneous fixes to the tools based on crash telemetry.

Q4 2016 / Q1 2017

This will be the first minor update, mainly focused on replacing .xproj/project.json with .csproj/MSBuild. Project format update should be automatic. Just opening a 1.0 project will update it to the new project format. There will also be new functionality and improvements in the runtime and libraries.

As context, .NET Core 1.0 included a preview version of the .NET Core Tools, referred to as “Preview 2”. The tools were “preview” primarily because we knew that we would change the tools experience post 1.0. .NET Core and the .NET Core Tools will both be “RTM quality” or “stable” with this release.

.NET Core Tooling

  • Support for .csproj/MSBuild project system
  • dotnet restore improvements to not restore packages that are part of .NET Core
  • New commands for managing the frameworks on the machine
  • dotnet publish will publish only required dependencies, for optimal distribution size

Languages (available for .NET Framework and .NET Core)

The next releases for the .NET languages will apply to all .NET platforms. There’s a lot of information out there about the features included in these releases but here’s a short summary:

  • Bring functional programming concepts to .NET languages
    • Tuples
    • Pattern matching
  • Performance and Code Quality
    • Value Tasks
    • Ref returns
    • Throw expressions
    • Binary literals
    • Digit separators
  • Developer Productivity
    • Out vars
    • Local functions

These features will be all available in C# 7. VB 15 will also implement all the features that impact language interop (tuples, ref returns, etc) but some features will be available in the next language update (e.g. pattern matching) or are not in the roadmap (e.g. local functions).

In addition to C# and VB we’ll also release a new version for the F# language. F# 4.1 will include things like:

  • Full .NET Core support
  • Better IDE experience with workspace support on the F# language service
  • New language features such as struct tuples which interoperate with ValueTuple, more support for annotating types as structs, support for the fixed keyword and more.

ASP.NET Core

  • Web Sockets
  • URL Rewriting Middleware
  • Azure
    • App Service startup time improvements
    • App Service Logging Provider
    • Azure Key Vault Provider
    • Azure AD B2C Support
  • Containers and Microservices
    • Service Fabric support via WebListener based server
    • MVC & DI Startup Time Improvements
  • Previews
    • SignalR
    • View Pages (Views without MVC Controllers)

.NET Core Runtime and Libraries

  • ARM 32/64
  • More Linux distributions (build from source)

Entity Framework Core

  • Azure
    • Transient fault handling (resiliency)
  • Mapping
    • Custom type conversions
    • Complex types (value objects)
    • Entity entry APIs
  • Update pipeline
    • CUD stored procedures
    • Better batching (TVPs)
    • Ambient transactions
  • Query
    • Stability, performance.
  • Migrations
    • Seed data
    • Stability
  • Reverse engineer
    • Pluralization
    • VS item template (UX)

Q1 2017 / Q2 2017

This release will bring back many of the missing APIs in .NET Core, including networking, serialization, data and more. Looking at the various flavors of .NET there is a lot of common BCL code that is not tied to App Models (WinForms, WPF, ASP.NET, etc). These APIs will be part of .NET Standard 2.0, which will be released at the same time, resulting in APIs being consistent across .NET Framework, .NET Core and Xamarin. It will be much easier to write portable code that can run on all the major .NET platforms, targeting .NET Standard 2.0. Expect a preview of this work to start showing up after we ship the Q4/Q1 release.

Better Communication

Moving forward we want to be more transparent in what the team is doing. To do this we are planning on updating this blog on a more frequently with updates on the team. A rough list of upcoming topics is:

  • .NET Core Roadmap (this blog post)
  • ASP.NET Upcoming Highlights
  • Entity Framework Upcoming Highlights
  • .NET CLI Upcoming Highlights
  • Support and Versioning .NET Core
  • Telemetry in .NET Core
  • .NET Standard
  • APIs Returning
  • Project Conversion from project.json to .csproj

Next week we hope to show some of the first examples of what the conversion to .csproj/MSBuild will look like and a deeper dive of the new functionality in one of (ASP.NET, EF or .NET CLI).

Thanks for reading this and please keep the feedback coming!