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.
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 buildwhich will improve ASP.NET Core publishing times.
- Updates to the
dotnet newtemplates for F# so they use the latest alpha of F# on .NET Core
- Miscellaneous fixes to the tools based on crash telemetry.
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.
- Support for .csproj/MSBuild project system
dotnet restoreimprovements to not restore packages that are part of .NET Core
- New commands for managing the frameworks on the machine
dotnet publishwill publish only required dependencies, for optimal distribution size
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
- 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
fixedkeyword and more.
- Web Sockets
- URL Rewriting Middleware
- 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
- View Pages (Views without MVC Controllers)
- ARM 32/64
- More Linux distributions (build from source)
- Transient fault handling (resiliency)
- Custom type conversions
- Complex types (value objects)
- Entity entry APIs
- Update pipeline
- CUD stored procedures
- Better batching (TVPs)
- Ambient transactions
- Stability, performance.
- Seed data
- Reverse engineer
- VS item template (UX)
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.
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!