© Sergey Nivens/shutterstock.com
.NET 5.0 ist erschienen

Ein Schritt in die Zukunft


Am 10. November 2020 wurde .NET 5.0 von Microsoft veröffentlicht. Es ist noch nicht die angekündigte Vereinigung aller .NET-Varianten, aber es bringt viele schöne Neuerungen. Daher lohnt es sich, das finale Release genauer unter die Lupe zu nehmen.

Der Windows Developer hatte bereits in Ausgabe 11.2020 ausführlich über die Previews 1 bis 7 von .NET 5.0 berichtet. Dieser Beitrag behandelt ergänzend dazu die Verbesserungen, die in Preview 8 sowie den beiden Release-Candidate-Versionen und der Endfassung erschienen sind. Eigentlich sollte die Preview-8-Version schon „feature complete“ sein [1]; das hat bei Microsoft allerdings nicht geklappt, denn selbst in Release Candidate 2 wurden noch Neuerungen und Breaking Changes ausgeliefert.

Die Erkenntnisse aus Preview 1 bis 7 seien hier kurz zusammengefasst:

  • Technisch ist .NET 5.0 der Nachfolger von .NET Core 3.1. Der Begriff „Core“ entfällt und die Versionsnummer 4.0 wird übersprungen, um zu suggerieren, dass .NET 5.0 auch der Nachfolger von .NET Framework 4.8 ist – was aber nur Marketing ist.

  • Die ursprünglich für .NET 5.0 angekündigte Integration von Xamarin in .NET Core findet erst in .NET 6.0 statt.

  • .NET 5.0 bringt zahlreiche Leistungsverbesserungen im Just-in-Time-Compiler, im Garbage Collector und in vielen Basisklassen.

  • .NET 5.0 unterstützt nun auch Windows auf ARM64-Prozessoren.

  • Der Target Framework Moniker (TFM) ist „net5.0“, ggf. gefolgt von der Zielplattform, z. B. „net5.0-windows“ (für Windows-Forms- und WPF-Anwendungen). Weitere Zielplattformen wie „-ios“ und „-android“ kommen aber erst mit der Integration von Xamarin in .NET 6.0.

  • .NET 5.0 enthält die Version 9.0 von C# mit der neuen Klassenart Record, der verkürzten Schreibweise new() zur Instanziierung, Erweiterungen bei Pattern Matching und Source Generators. Visual Basic .NET wird nicht mehr weiterentwickelt.

  • Für Windows Forms gibt es in .NET 5.0 ein neues Steuerelement TaskDialog.

  • Native Interoperabilität erlaubt den Aufruf von .NET-5.0-Code aus beliebigen Programmiersprachen.

  • Interoperabilität zu WinRT ist nicht mehr Teil der .NET-Laufzeitumgebung, sondern wird durch ein NuGet-Paket [2] angeboten.

Der Rest dieses Beitrags beschäftigt sich mit Neuerungen, die Microsoft seit Preview 7 in .NET 5.0 eingeführt hat. Für .NET 5.0 benötigen Sie mindestens Visual Studio Version 2019 16.8, das zeitgleich mit .NET 5.0 erschienen ist.

Blazor 5.0

Die meisten Neuerungen kurz vor Schluss hat das SPA-Web-Framework ASP.NET Core Blazor erhalten. Seit Preview 7 ist Blazor 5.0 überhaupt erst in .NET 5.0 integriert, seit Preview 8 gibt es Neuerungen. Beide Blazor-Varianten, also Blazor Server und Blazor WebAssembly, tragen nun dieselbe Versionsnummer: 5.0. Blazor-WebAssembly-basierte Anwendungen melden sich in .NET 5.0 nun nicht mehr mit „Mono 6.13.0“, sondern mit „.NET 5.0.0“, wenn man die Eigenschaft System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription abfragt. Das liegt daran, dass Blazor WebAssembly jetzt die Klassenbibliotheken von .NET 5.0 verwendet. Die Runtime ist allerdings immer noch Mono, was man beim Kompilieren sieht: mono_wasm_runtime_ready. Die Angleichung der Klassenbibliotheken bedeutet aber nicht, dass nun alle .NET-Klassen in Blazor WebAssembly funktionieren: Weiterhin wirken die Einschränkungen der Browser-Sandbox und der WebAssembly VM. So sind zum Beispiel Dateisystemzugriffe, Multi-Threading, direkte Datenbankzugriffe und andere Netzwerkprotokolle als HTTP/HTTPS weiterhin nicht erlaubt.

Zur Leistungssteigerung von Blazor WebAssembly hatte Microsoft das Komponentenrendering, die JSON-Serialisierung und die Interoperabilität mit JavaScript in Preview 7 beschleunigt (Abb. 1). Neue Blazor-Funktionen gibt es erst seit .NET 5.0 Preview 8.

schwichtenberg_dotnet5_1.tif_fmt1.jpgAbb. 1: Leistungsverbesserungen bei Blazor WebAssembly (Quelle: Microsoft)

Wichtigste Neuerung für Blazor WebAssembly 5.0 ist die in der ersten Version (mit Versionsnummer) schmerzlich vermisste Möglichkeit, Anwendungsteile nachzuladen. Lazy Loading von DLLs aus refere...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang