Visual Studio 2015, .NET 4.6, C# 6.0 Released
VS 2015 is now available for download from MSDN!
Probably the biggest things about this release are the new Roslyn compiler and the fact that much of .NET is now officially open source! Aside from giving the .NET team a better base for their compiler, Roslyn is extremely flexible (always good news if you are into metadata). This gives you a lot of power to build custom tools, analyzers, rewriters and other things that can let you (and vendors) improve the development experience.
One thing to note is that, unlike the old C# compiler, Roslyn is not part of a .NET install, so you can’t just assume it is present on end-user’s computers (although, of course, developers who have VS installed will have it). For people who are relying on compiler services as part of an end-user application, the old C# compiler is still present.
There is also a very exciting new version of ASP.NET/MVC coming – but that is not quite ready yet (Although a new community preview was also released today). I’ll probably do a post on this once it really comes out.
There are a fair number of improvements in .NET 4.6, including lots of speed improvements – assemblies are loaded more efficiently, there is a new 64-bit Jitter which should really help performance on 64-bit machines (which is virtually all of them now). I’m also looking forward to playing with the released version of the .NET Native Compiler, which can create native Win32/64 apps without requiring .NET to be installed. This was originally created for improved support for the Microsoft Store, but I can see a lot of potential uses for it if it stands up to scrutiny.
This link provides a more detailed list of what’s new in .NET 4.6.
There are also some very cool new features in C# with this release. C# 6.0. I will do posts on some of my favorites, such as:
- Null-conditional operators
- Auto-property initializers
- using static
- Expression bodies on properties and methods
- Exception filters
- String interpolation
- nameof expression
- Index initializers