It has only been about a year since .NET Core 1.0 RC came out. We are now getting close to .NET Core 2.0. We have been playing with .NET Core since the betas and feel like the quality of the 1.0 runtime was very good. Our only complaint has really been odd Visual Studio behavior. We would expect that with 2.0, the adoption is likely to skyrocket.
Read more: Why C# and .NET Core Are the Next Big Thing
Recent .NET Core 1.1 Changes with Visual Studio 2017
1. xproj Project Files Replaced by New Version of csproj
One of the biggest differences with .NET Core was the new project files. Visual Studio used xproj and project.json files instead of the traditional csproj. The new project file format was much simpler but didn’t work with some other .NET tools like msbuild. The new csproj is supposed to include a lot of the benefits learned from the xproj experiment.
2. MSBuild Works Again
This is a big deal and was a big problem for us at Stackify. Our build process for Prefix used MSBuild and Installshield to package it up for deployment. By switching to xproj, all of that was broken. Getting MSBuild support back will be much appreciated for those that already have a lot of existing build and deployment processes in place.
3. Visual Studio 2017 – Tooling Enhancements
Now that project.json is gone, how you do multi-targeting of frameworks and the Visual Studio UI around references and dependencies has completely changed in Visual Studio 2017.
To do multi targeting you now have to manually edit the csproj file and things can get a little weird. The good news if you are only targeting one framework, you can easily do it within the project properties. Multi targeting has been relegated to an advanced use case I guess with poor UI support for it.
By the way, one of the other big advantages of Visual Studio 2017 is how easy it is to install. Microsoft spent an enormous amount of time trying to streamline and improve the installation experience. Check out the Microsoft docs site to learn more about the changes and new features of VS 2017.
So, what is changing with .NET Core 2.0?
1. Release Date
Keep an eye on the .NET Core roadmap over at GitHub. It currently says Q2 for a preview/RC type release and Q3 for general availability. I would expect the 2.0 preview to be launched at Microsoft Build 2017.
Visual Studio 2017 was released in March 2017. As part of that, there was a bunch of .NET Core tooling improvements along with the new csproj file format.
2. .NET Standard 2.0 Expanded APIs & the Ability to Reference Full Framework Libraries
.NET Standard 2.0 will broaden the set of APIs available to include a lot of the missing features. It sounds like 2.0 will make virtually all full framework APIs available. Some popular complaints were System.Drawing, DataTables, and others. You can search the code of over on GitHub to see the changes. Isn’t open source awesome?
One of the biggest problems with .NET Core was the lack of third party libraries. For example, when 1.0 came out, popular logging libraries like log4net were not even available (it is now). However, this was really only a problem if you wanted to deploy your app on Mac or Linux. You could have used .NET Core and targeted full .NET framework and not had these issues.
.NET Standard 2.0 has added a new compatibility shim that will enable any .NET Core app to reference any full framework library.
Of course, this will only work for cases where the .NET Framework library uses APIs that are available for .NET Standard. That’s why this isn’t the preferred way of building libraries you intend to use across different .NET platforms. However, this compatibility shim provides a bridge that enables you to convert your libraries to .NET Standard without having to give up referencing existing libraries that haven’t been converted yet.
Also check out this great blog post: .NET Standard 2.0 – Making Sense of .NET Again
3. Expanded OS Support
One of the big goals with .NET Core is portability across multiple operating systems. Including desktops, servers, and even mobile. Microsoft, and the community, continue to expand the support of .NET Core. Look for the next version to continue expanding support of common Linux distros. Samsung is even working to provide support for the mobile OS Tizen.
4. Other Improvement Themes
On GitHub, the team lists these themes as being central to .NET Core 2.0.
- .NET Core Tooling – Further tooling improvements in Visual Studio
- Performance – The .NET team and community seems to be up to the challenge for ensuring .NET Core is the fastest application runtime available.
- .NET Core and Cloud – Improve how to deploy apps to Azure and troubleshoot application problems.
- Build from Source – Ability to clone the actual .NET Core source code repository and build it!
.Net Core 2.0 Changes are on the Way!
We will continue to update this as we learn more and after the release. We are excited to get our hands on it and build cool stuff with it. We will also be working to ensure that Prefix and Retrace also work perfectly with 2.0 as they come out.
- What Is Application Performance Monitoring and Why It Is Not Application Performance Management - July 13, 2017
- Advanced ASP.NET Trace Viewer – WebForms, MVC, Web API, WCF - July 10, 2017
- Performance Tuning in SQL Server: Top 5 Ways to Find Slow Queries - July 5, 2017
- 8 Key Application Performance Metrics & How to Measure Them - July 3, 2017
- Understanding & Profiling C# Async Await Tasks - June 19, 2017