Microsoft läutet mit .NET Core 3.0 und C# 8.0 neues Zeitalter ein

Microsoft hat im Rahmen der ".NET Conf 2019" .NET Core 3.0 und C# 8.0 freigegeben. Erschienen ist zudem Visual Studio 2019 in Version 16.3.

In Pocket speichern vorlesen Druckansicht 142 Kommentare lesen
Microsoft läutet mit .NET Core 3.0 und C# 8.0 neues Zeitalter ein

(Bild: Alexas_Fotos / Pixabay)

Lesezeit: 12 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Nach einer längeren Preview-Phase mit neun Vorschauversionen und einem Release Candidate zwischen Dezember 2018 und September 2019 können Softwareentwickler nun die endgültige Version von .NET Core 3.0 kostenfrei herunterladen. Enthalten ist der C#-Compiler in Version 3.3, der die Sprachversion C# 8.0 unterstützt. Für die Verwendung beider Produkte empfiehlt Microsoft die Version 16.3 von Visual Studio 2019, auch wenn einzelne Anwender es geschafft haben, Framework und Compiler in ältere Versionen einzubinden.

Größte Neuerungen in C# 8.0 sind Standardimplementierungen in Schnittstellen (vgl. entsprechende Neuerung, die es schon in Java 8 als "Default Methoden" gab), Switch Expressions (Methoden, die nur aus einer prägnanten Switch-Verzweigung bestehen), Index- und Range-Operatoren zur Adressierung von Teilmengen sowie asynchrone Streams (asynchrone Iteration mit foreach).

Im Rahmen von Visual Studio 2019 Version 16.3 können auch Softwareentwickler, die noch mit dem klassischen .NET Framework arbeiten, den neuen Compiler nutzen. Allerdings stehen im klassischen .NET Framework – wie angekündigt – einige neue Sprachfeatures nicht zur Verfügung und Microsoft will auch den dafür notwendigen .NET Standard 2.1 nicht mehr für das klassischen .NET Framework anbieten. In Arbeit ist aber die Unterstützung für den kompletten C#-8.0-Sprachumfang in Mono, Xamarin und Unity.

Auf der Ebene der Common Language Runtime (CLR) ist die bisher optionale Tiered Compilation (TC) im Just-In-Time-Compiler nun der neue Standard in .NET Core 3.0. Der JIT-Compiler legt dabei zunächst den Schwerpunkt auf schnelle Übersetzung in Maschinencode statt eines optimalen Ergebnisses. Erst später wird bei häufiger verwendeten Programmteilen die Übersetzung nachträglich optimiert.

Bei den Prozessoren neu ist die Unterstützung für ARM64, allerdings zunächst nur mit Linux-Betriebssystemen. Windows-Nutzer können vorerst keine .NET-Core-Anwendungen schreiben, die auf ARM64-Prozessoren laufen.

Nachdem die ersten beiden Versionen von .NET Core nur Webserver- und Konsolenanwendungen sowie die Universal Apps für Windows 10 unterstützt haben, können Entwickler nun mit .NET Core 3.0 erstmals auch klassische Desktop-Anwendungen mit der Windows Presentation Foundation (WPF) und mit Windows Forms erstellen. Allerdings verliert eine .NET-Core-Anwendung durch den Einsatz der ".NET Core Windows Desktop Runtime" ihre ansonsten weiterhin gegebene Plattformunabhängigkeit.

Einige Funktionen von WPF und Windows Forms stehen unter .NET Core noch nicht zur Verfügung. Dazu gehören die XAML Browser Application (XBAP) und der grafische Designer für Windows Forms sowie damit einhergehend die Framework-Klassen, mit denen Entwickler den Designer in eigene Anwendungen einbauen können. Microsoft arbeitet jedoch an dem Designer und diskutiert in einem YouTube-Video die Herausforderungen einer Migration des vor fast 20 Jahren entstandenen Designer-Programmcodes auf das aktuelle .NET Core. Für WPF ist der auf .NET Core angepasste Designer bereits in Visual Studio 2019 Version 16.3 enthalten.

Für Windows Forms gibt es in .NET Core 3.0 eine neue Funktion zur Anpassung der Oberfläche an hochauflösende Anzeigegeräte, die es im klassischen .NET Framework nicht gab (siehe Application.SetHighDpiMode()). SetHighDpiMode() wirkt allerdings nur vor dem Öffnen des ersten Fensters.

In Hinblick auf die Migration bestehender .NET-Framework-Anwendungen auf .NET Core hat Microsoft auch die klassische Variante seines objektrelationalen Mappers, ADO.NET Entity Framework, auf .NET Core umgestellt. Die neue Version 6.3 bietet keine neuen Features außer der Lauffähigkeit auf .NET Core. Auch hier fehlt noch der grafische Designer.

Entwickler, die dennoch schon jetzt mit Windows Forms und Entity Framework in .NET Core starten wollen, können als Problemumgehung vorerst die zugehörigen Designer in einem klassischen .NET-Projekt verwenden und das Resultat in ein .NET-Core-Projekt verlinken.

Microsoft betont jedoch, dass man neue Projekte nicht mit Entity Framework, sondern nur mit Entity Framework Core starten sollte. In Version 3.0 hat Microsoft die Übersetzung von LINQ zu SQL komplett überarbeitet, sodass nun zum Beispiel auch Union-Operationen, Subqueries und komplexere "Group By"-Anweisungen in SQL übersetzt werden können. Die gefährliche automatische Client Evaluation, die hilfsweise alle Daten einer Tabelle zur Verarbeitung ins RAM holte, wurde abgeschafft.

Neben einigen kleineren Verbesserungen beim Reverse Engineering und dem schon lange in der Entwicklung befindlichen Datenbanktreiber für den Cloud-Datenbankdienst Cosmos DB gibt es ansonsten wenig Neuerungen in Version 3.0, sondern vor allem zahlreiche Breaking Changes, die zum Teil umfangreiche Änderungen an bestehendem Programmcode erfordern. Microsoft will sein Produkt damit auf neue Features vorbereiten, die dann in der Zukunft erscheinen sollen.