For years, Build was Microsoft’s premium in-person conference for developers where many new important announcements were made every year.
Because of the global pandemic, the event was cancelled this year and later announced as a completely free digital event that everyone could attend.
More than 200,000 attendees officially registered for the online-only event held on May 19th and 20th.
Many important announcements about the future of .NET and Microsoft’s developer ecosystem in general were made in the 48-hour live stream.
Some important announcements are briefly described in the remainder of this article.
Image Credit: https://news.microsoft.com/build2020/
.NET related Announcements in Build 2020
Blazor WebAssembly
Blazor is a framework for developing single-page applications (SPAs) with C# and .NET libraries, instead of JavaScript. It supports two execution models:
- In Blazor Server, the C# code executes on the server, updating the HTML UI in the browser in real-time, using web sockets. This execution model was officially released in September 2019 as part of .NET Core 3.0.
- In Blazor WebAssembly, the C# code executes in the browser by the .NET runtime for WebAssembly, allowing the web application to be served as a static site like any other JavaScript-based SPA. This execution model was still in preview in .NET Core 3.0. It was finally officially released at Build 2020.
Both execution models share the same component model. In addition to the components shipped with the framework, there are already many others available for free as open-source libraries, as well as by commercial component vendors.
.NET 5
The plans for .NET 5 were officially unveiled for the first time at last year’s Build conference- Build 2019.
This year, .NET 5 Preview 4 was released at Build, along with the corresponding versions of ASP.NET Core and Entity Framework Core. For now, they only contain minor bug fixes and optimizations to Docker images and HTTP/2 network code.
An important .NET 5 related news at Build this year was an update to its November 2020 release. Originally, .NET 5 was planned to be a unification of different .NET runtimes by merging Xamarin and Mono runtimes with .NET Core SDK and libraries.
Due to the current global health pandemic, these plans were postponed and are now scheduled for release as part of .NET 6 in November 2021.
In the light of the planned .NET runtime unification, the current 2.1 version of .NET Standard is going to be the last one. There will be no new version for .NET 5.
.NET Standard will still be important as it provides compatibility baseline for existing runtimes: .NET Standard 2.0 for the .NET framework and .NET Standard 2.1 for Xamarin, until it becomes part of .NET 6.
According to current plans, .NET 5 will still include new versions of languages (C# 9 and F# 5), support for single-file applications, Windows ARM 64 support, improvements for running inside containers, as well as many other performance improvements.
.NET Multi-platform App UI
A new cross-platform UI framework named .NET Multi-platform App UI (or .NET MAUI for short) was announced as a successor to Xamarin.Forms. In addition to Android and iOS, it will also support development for Windows and macOS.
.NET MAUI will use native UI components on each platform and provide access to all native APIs. Unlike Xamarin.Forms applications, .NET MAUI applications will be fully contained inside a single project, including all the platform-specific code and resources.
The framework will support the MVVM (Model-View-ViewModel) architectural pattern with XAML markup and two-way binding that’s familiar to existing Xamarin.Forms developers. Additionally, it will also support the MVU (Model-View-Update) architectural pattern based on unidirectional dataflow which originates from Elm and is gaining popularity in other frameworks (e.g. Flutter).
According to the current roadmap, the first preview of .NET MAUI will be available by the end of 2020. The official release is planned for November 2021 along with .NET 6. By that time, tools for a smooth transition of existing Xamarin.Forms projects to the new .NET MAUI framework, will be made available.
Project Reunion
Project Reunion is the name for a common set of libraries designed to provide a unified platform for Win32 and UWP Windows applications written in .NET (Windows Forms, WPF or UWP), C++, or React Native. They will be distributed through NuGet, decoupled from specific Windows versions. As new APIs will be introduced, they will be backported to all supported versions of Windows.
Currently, early previews are available for:
- WinUI 3, a modern Windows UI framework not limited to UWP applications.
- WebView 2, a modern web view control based on the new Chromium-based Microsoft Edge browser.
According to the roadmap, the first official release is to be expected in 2021.
C# 9
As part of .NET 5, the next version of C# is planned for November 2020. At Build, many of the new language features were presented publically for the first time. The focus is still on making the language terser for more scenarios:
- Source generators are an extension of the code analyzer model. They have access to the syntax and semantic models of the program during compilation with the capability of generating additional source files to be included in the final program. Although they can’t rewrite existing code, they can still be used in numerous scenarios, including attribute-based implementation of the INotifyPropertyChanged interface and replacement of runtime scanning with reflection at application startup.
- The long-awaited records allow the implementation of immutable objects with minimum code, providing features like value-based equality, with expressions for creating object clones with some changes applied, positional construction and deconstruction, and more.
- Init-only properties are useful for creating immutable objects. They can only be used in object initializers and can’t change the object after its initial construction.
- Pattern matching is expanded with relational patterns (corresponding to relational operators >, >=, <, <=, and particularly useful for specifying ranges of values) and logical patterns (corresponding to logical operators and, or, and not).
- Top-level programs reduce the boilerplate needed to create a program by allowing the startup code to be placed at the top level, instead of inside a static Main method.
Most of the features can be tried out online in the SharpLab editor by selecting a Roslyn branch corresponding to the feature of interest. See Figure 1.
Figure 1: Roslyn branch selection in SharpLab online editor
The only exception is the source generators feature which is included in the latest .NET 5 Preview and requires the latest preview version of Visual Studio 2019 to try out.
Visual Studio
Image Credit: https://news.microsoft.com/build2020/
Visual Studio 2019
At Build, Visual Studio 2019 version 16.6 was officially released.
Its biggest new feature is the built-in Windows Forms Designer for .NET Core. It supports all the interactive features of the .NET framework version we already know, such as drag and drop, integration with the Properties window, generation of events, etc.
It’s still not feature-complete, though.
It has only partial support for localization. It doesn’t support data binding, form inheritance, and third party controls, as well as the built-in DataGridView and ToolStripContainer controls. That’s also the reason it’s still treated as a preview and has to be manually enabled in the Options dialog.
A new Git tool window separate from the Team Explorer tool window, is now also available as a preview feature in the Options dialog. It features a completely new interface for repository initialization, interacting with branches, and handling of merge conflicts.
Figure 2: Enabling preview features in the Options dialog
Other new features include a new .NET Async profiling tool with detailed timing information for asynchronous operations and additional quick actions and refactorings.
The new Visual Studio 2019 version 16.7 Preview 1 was released at the same time. It brings additional improvements to the new Git tool window, several new quick actions and refactorings, and improvements to XAML tooling such as XAML Binding failure panel, special UI for suggested actions on controls, and a color visualizer.
Visual Studio for Mac
Visual Studio for Mac version 8.6 was also released.
It now includes full support for Blazor WebAssembly applications and gRPC services, along with corresponding project templates. A terminal window was integrated into Visual Studio to avoid unnecessary switching between applications. Several menus were reorganized and commands renamed to improve discoverability for new users.
Visual Studio Codespaces
Visual Studio Codespaces is the new name for Visual Studio Online which was first announced at last year’s Build conference and made publically available in preview at Ignite in November 2019.
The Visual Studio Code version is still in public preview but has been updated with lower pricing.
The Visual Studio 2019 version has been expended with support for ASP.NET Core, .NET Core, and C++ projects in the Windows environment. You can sign up to get early access to the private preview.
The same technology has also been integrated into GitHub as GitHub Codespaces. Its goal is to lower the barrier to contributing to open source projects by providing a working development environment.
You can sign up to get early access to the current beta version.
Visual Studio Live Share
Visual Studio Live Share is a feature for live remote collaboration of developers on the same code across Visual Studio Code, Visual Studio 2019, Visual Studio Codespaces, and the web client.
Each developer can independently work with the code in her/his user interface while at the same time being able to follow what others are doing.
At Build, support for chat and audio was announced, that will come in preview to Visual Studio Code and the web client in the following weeks.
Azure Static Web Apps
Most of the new Azure features announced primarily targeted Operations, IT professionals, and data scientists.
The only new developer-focused announcement was the preview of Azure App Service Static Web Apps, a dedicated service for modern Jamstack applications, i.e. JavaScript front-end applications (SPAs) and sites made with static site generators such as Gatsby.
Accompanying GitHub actions support the automatic deployment of a new production version when its code is pushed to the master branch of the repository. They also enable a simple way to validate changes contained in pull requests by publishing them to a separate pre-production environment.
Optional integration with Azure Functions can be used to enhance the application with calls to serverless APIs.
GitHub
New GitHub features were announced a few weeks before the Build conference at a separate GitHub Satellite virtual event. They include:
- The already mentioned GitHub Codespaces, based on Visual Studio Codespaces, formerly named Visual Studio Online.
- Code scanning of public repositories for potential security vulnerabilities using the CodeQL semantic analysis engine.
- Secret scanning for private repositories (formerly named token scanning) for detecting known types of secrets for external services that were committed to the repository.
- GitHub Discussions as an alternative to issues and pull requests for communication between developers and users, primarily for creating a community knowledge base.
- Integration of GitHub Actions for Azure into Visual Studio Code, Azure CLI, and Azure Portal.
Conclusion
Although the timeline is delayed due to the pandemic, the plans for the unified future of .NET with .NET 5 and .NET 6 haven’t changed.
For web development, the most important news was the release of the final version of Blazor WebAssembly. For native development, announcements of .NET MAUI and Project Reunion promise some bigger changes after a lengthy period of slow evolution.
The Visual Studio family of products is continuously evolving as well. Because of the frequent new minor releases, individual updates typically don’t include many new features. The versions released at this year’s Build are no exception to that.
Azure Static Web Apps was the only big Azure announcement this year with high relevance for developers.
After the acquisition, GitHub is getting better integrated with the Azure services. Announcements of GitHub Codespaces and improvements to GitHub Actions are proof of that. On the other hand, there isn’t a lot of news about Azure DevOps which has a feature set very similar to GitHub.
Microsoft Build proved this year that in-person tech events can thrive online. After all, pulling off a 48-hour tech marathon of an event is no easy feat!
Click here to watch the keynote and highlights of this event.
Which announcement got you the most excited? Let us know in the comments.
This article has been editorially reviewed by Suprotim Agarwal.
C# and .NET have been around for a very long time, but their constant growth means there’s always more to learn.
We at DotNetCurry are very excited to announce The Absolutely Awesome Book on C# and .NET. This is a 500 pages concise technical eBook available in PDF, ePub (iPad), and Mobi (Kindle).
Organized around concepts, this Book aims to provide a concise, yet solid foundation in C# and .NET, covering C# 6.0, C# 7.0 and .NET Core, with chapters on the latest .NET Core 3.0, .NET Standard and C# 8.0 (final release) too. Use these concepts to deepen your existing knowledge of C# and .NET, to have a solid grasp of the latest in C# and .NET OR to crack your next .NET Interview.
Click here to Explore the Table of Contents or Download Sample Chapters!
Was this article worth reading? Share it with fellow developers too. Thanks!
Damir Arh has many years of experience with software development and maintenance; from complex enterprise software projects to modern consumer-oriented mobile applications. Although he has worked with a wide spectrum of different languages, his favorite language remains C#. In his drive towards better development processes, he is a proponent of Test-driven development, Continuous Integration, and Continuous Deployment. He shares his knowledge by speaking at local user groups and conferences, blogging, and writing articles. He is an awarded Microsoft MVP for .NET since 2012.