Digest - .NET Conf 2020
Digest of the free virtual event at https://www.dotnetconf.net/ held November 10-12, 2020. See previous digest from Microsoft BUILD 2020 covering .NET 5 too at Digest - Microsoft BUILD 2020.
Announcements and Blog Posts
A few great announcements and blog posts can be found below. Let’s start with some code copied and edited a bit from the first blog post. Top-level program example 👍
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Device.Gpio;
using System.Threading;
using static System.Console;
var pin = 18;
var lightTime = 1000;
var dimTime = 200;
WriteLine($"Let's blink an LED!");
using GpioController controller = new ();
controller.OpenPin(pin, PinMode.Output);
WriteLine($"GPIO pin enabled for use: {pin}");
// turn LED on and off
while (true)
{
WriteLine($"Light for {lightTime}ms");
controller.Write(pin, PinValue.High);
Thread.Sleep(lightTime);
WriteLine($"Dim for {dimTime}ms");
controller.Write(pin, PinValue.Low);
Thread.Sleep(dimTime);
}
Announcing .NET 5.0
Summary: Very long and detailed post about everything .NET 5. Highlights from the post copied below:
There are many important improvements in .NET 5.0:
- .NET 5.0 is already battle-tested by being hosted for months at dot.net and Bing.com (version).
- Performance is greatly improved across many components and is described in detail at Performance Improvements in .NET 5.0, Arm64 Performance in .NET 5.0, and gRPC.
- C# 9 and F# 5 offer new language improvements such as top-level programs and records for C# 9, while F# 5 offers interactive programming and a performance boost for functional programming on .NET.
- .NET libraries have enhanced performance for Json serialization, regular expressions, and HTTP (HTTP 1.1, HTTP/2). They are also are now completely annotated for nullability.
- P95 latency has dropped due to refinements in the GC, tiered compilation, and other areas.
- Application deployment options are better, with ClickOnce client app publishing, single-file apps, reduced container image size, and the addition of Server Core container images.
- Platform scope expanded with Windows Arm64 and WebAssembly.
C# 9.0 on the record
Summary: Syntax for record
(previously data class
) has changed quite
a bit since May, this post details the final changes and additions for C# 9.0.
Records are ideal for immutable message types in pub/sub, CQRS systems reducing
boilerplate quite a lot.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
Action<string> log = Console.WriteLine;
Person[] persons = {
new ("Anders", "Hejlsberg"),
new ("Mads", "Torgersen")
};
var (f, l) = persons[0];
var otherPerson = persons[^1] with { LastName = f };
log(otherPerson.ToString());
public record Person(string FirstName, string LastName);
This will print:
1
Person { FirstName = Mads, LastName = Mikkelsen }
Announcing F# 5
Summary: From F# 4.1 to F# 5, the chief focus for F# has been bringing up great support for .NET Core (now .NET 5).
Getting Started With NuGet 5.8
Summary: Finally! We have support for installing prerelease packages from the command line!
1
dotnet add package –prerelease
List of important improvements in NuGet 5.8:
- Create and use .NET 5 NuGet packages with .NET 5 Support.
- Faster package extraction by using MemoryMappedFiles for Faster Writes.
- Search for packages using the NuGet CLI Search Command.
- See faster NuGet restores with No-Op Restore Optimization.
- Diagnose your package list with dotnet list package –verbosity.
- Install prerelease packages with dotnet add package –prerelease.
- Verify signed NuGet packages with dotnet nuget verify.
- Get to code faster with NuGet Solution Load Performance Improvements.
- Be more productive with Visual Studio Package Manager Improvements.
What’s new in .NET Productivity
Summary: Covers some of the latest .NET productivity features available in Visual Studio 2019. Including tooling improvements, code fixes and refactorings.
Announcing ASP.NET Core in .NET 5
Summary: ASP.NET Core in .NET 5 is loaded with lots of great new features and improvements. Here’s a sampling:
- MVC model binding improvements, including support for C# 9 record types
- Blazor Server & Blazor WebAssembly support and improvements
- Built-in OpenAPI and Swagger UI support for Web APIs
- SignalR Hub filters and parallel Hub invocations
- Azure AD authentication with MIcrosoft.Identity.Web
- Auto browser refresh with
dotnet watch
- HTTP/2 and gRPC performance improvements
Announcing the Release of EF Core 5.0
Summary: a full featured cross-platform version of Entity Framework that delivers the most requested features like Many-to-Many and Table-Per-Type.
Visual Studio 2019 v16.8 and v16.9 Preview 1 Release Today
Summary: There are many features landing in this version of Visual Studio 2019 v16.8 and v16.9 Preview 1. Check out our new Git Integration Features, .NET productivity enhancements, C++20 Library Options, and XAML Data Binding.
Recapping Xamarin Highlights from .NET Conf 2020
Summary: XAML Hot Reload “2.0” and Xamarin.Forms 5. (also see Xamarin.Forms 5 Preview: Advanced UI Controls for Beautiful Apps)
Videos
I have selected a few videos I found interesting below incl. full playlist of all videos from the conference. With summaries some of which are just copies of the official summary.
.NET Conf 2020 Playlist
Summary: 79 videos excl. the two full day streams.
Keynote - Welcome to .NET 5
Summary: Scott Hunter announces the availability of .NET 5 and a look at the features incl. C# 9.0, see below. Additionally, Scott Hunter, Scott Hanselman and Scott Guthrie reminisce around how ASP.NET got started. 👍 A great overview of the content being discussed in the other videos.
What’s New in C#?
Summary: a tour of the new features in C# 9.0: Top-level programs remove clutter. Init-only properties and records improve support for immutable and value-based programming. New patterns take pattern matching to the next level.
.NET 5 Runtime Deep Dive with Rich Lander and the Architects
Summary: Rich Lander, Stephen Toub and Jan Kotas discuss the .NET 5 runtime. Konrad Konkosa (@onradkonkosa) did a beautiful mind-map over this shown below. See https://twitter.com/konradkokosa/status/1326635315616952321/
A talk for trailblazers: Blazor in .NET 5
Summary: Wondering what’s in store for Blazor in .NET 5? Wonder no more! This talk features the latest and greatest features to arrive in Blazor as part of .NET 5. From improved APIs for working with the browser to CSS isolation to a variety of performance improvements, you’ll leave this presentation with rundown of everything you’ll be able to do in the latest version of Blazor.
Porting Projects to .NET 5
Summary: Want to move to .NET 5? In this session you’ll see how to approach porting projects from .NET Framework, .NET Core, and .NET Standard to .NET 5 and the tools you can use to get there.
Modern Web Development with Blazor & .NET 5
Summary: Blazor isn’t just for new apps! Blazor in .NET 5 is integrated seamlessly with ASP.NET Core to enable modern full stack web development with .NET. In this session we’ll show you how you can use Blazor and ASP.NET Core together to add rich client-side interactivity to both new and existing apps. You’ll learn how to use Blazor components from your existing MVC views and Razor Pages, handle server-side prerendering, setup authentication & authorization, improve load time performance, and then deploy your app into production.
Xamarin.Forms 5: Beautiful and Fast Apps with Less Code
Summary: Xamarin.Forms 5 is jam-packed with new features to make it easier than ever to develop fast, beautiful, cross-platform apps. Come see what new features are in Xamarin.Forms 5, and learn more about how our Xamarin Community Toolkit is getting more features than ever into your hands! Take care of your plants!
Developing and Deploying Microservices with ‘Tye’
Summary: Learn about new tooling the .NET team is working on to help you build, debug and deploy microservices faster.
Get to know the .NET 5.0 SDK
Summary: .NET 5 is the next version of .NET Core. The .NET SDK incudes the language compilers for C#, Visual Basic and F#. It also includes NuGet to manage packages, MSBuild to build and publish projects, and miscellaneous things like the templating engine. The .NET CLI and the community .NET tools enhance your command line experience and integrate with Visual Studio. Get a big picture of the .NET SDK and see what’s new in 5.0.
What’s new for desktop developers building WPF, UWP & WinForms
Summary: New XAML data binding diagnostic!!! ♥
High-performance Services with gRPC: What’s new in .NET 5
Summary: James Newton-King (of famed Newtonsoft JSON.NET) discusses gRPC a high-performance RPC framework used by developers around the world to build fast apps. In this talk you will learn about what’s new in gRPC for .NET 5, like performance improvements, gRPC-Web, Blazor WebAssembly support, Hosting on Http.sys and IIS, and OpenTelemetry.
Developer Fun with Scott Hanselman
Summary: Watch Scott Hanselman update one of his many web-sites from .NET Core 3.1 to 5.0. Fun and golden nuggets.
What’s New in Visual Studio 2019 and beyond
Summary: Learn what’s new in latest Visual Studio 2019 as well as features the team is currently working on - including some that we’ve never shown to the public before.
C# Source Generators - Write Code that Writes Code
Summary: With C# 9 there is finally an officially supported mechanism for generating source code into your .NET projects as part of the compiler pipeline. Lets run through how they work, some of the pros and cons, and play around with ideas to get your mind racing with the possibilities.
An alternative to T4 where you have access to the compiler context of a project.
Maximising Algorithm Performance in .NET: Levenshtein Distance
Summary: Great talk with performance tricks you may not know on an algorithm you may never have heard of before, be prepared to learn about my journey from different array structures to pointers, SIMD to threading, as we take the journey to maximum performance together.
Download Videos for Offline Viewing
Most from .NET Conf 2020 can be found below for direct download:
https://dayngo.com/channel9/events/f83f208569964f108bfdac68005187b9/2020
I use this personally to download all the videos to my Raspberry Pi for offline viewing. 🍀