Neues aus der .NET-Welt

Rückschau auf die Microsoft Build 2020: One .NET kommt erst mit .NET 6.0
1 Kommentar

Aufgrund der Covid-19-Krise verschiebt Microsoft die Vereinheitlichungen der .NET-Implementierungen von .NET 5.0 auf .NET 6.0. Auch WinUI 3 erscheint erst 2021 und Xamarin verliert seinen Namen.

Die größte Entwicklerkonferenz von Microsoft fand vom 19. bis 21. Mai 2020 erstmals komplett virtuell als Onlinekonferenz statt. Schon Anfang März hat sich Microsoft entschieden, die Build 2020 komplett ins Internet zu verlegen. Die zuvor registrierten Teilnehmer erhielten ihre Gebühr zurück, die Teilnahme war für jedermann kostenfrei. Die Vorträge wurden mehrfach für verschiedene Zeitzonen gehalten, die Keynotes wiederholt.

Neben Frontalveranstaltungen mit unlimitierter Teilnehmerzahl gab es auch interaktive Frage-Antwort-Sitzungen mit Einlassbegrenzung. Letztere wurden über Microsoft Teams gehalten. Für die nichtinteraktiven Vorträge bediente sich Microsoft der professionellen Live-Produktionssoftware von Tagboard, die einige interessante Picture-in-Picture-Ansichten lieferte. Die 648 Vorträge der Build 2020 kann man sich auch im Nachhinein kostenfrei auf der Konferenzwebsite ansehen.

Vereinheitlichung von .NET kommt erst Ende 2021

Auf der Build 2019 hatte Microsoft die Zusammenführung von .NET Framework, .NET Core und Mono/Xamarin zu einer einheitlichen Implementierung angekündigt, die als .NET 5.0 im November dieses Jahres erscheinen sollte. Nun hat Microsoft verkündet, dass die Integration von Mono und Xamarin nicht mit .NET 5.0 (am 10.12.2020 im Rahmen der .NET Conf 2020) erfolgen wird, sondern auf .NET 6.0 im November 2021 verschoben wurde. Von einer Integration der Universal Windows Platform (UWP) war gar nicht mehr die Rede, stattdessen fokussiert sich Microsoft auf deren Nachfolger Windows UI Library 3 (WinUI 3).

BASTA! 2020

Entity Framework Core 5.0: Das ist neu

mit Dr. Holger Schwichtenberg (www.IT-Visions.de/5Minds IT-Solutions)

Memory Ownership in C# und Rust

mit Rainer Stropek (timecockpit.com)

Softwarearchitektur nach COVID-19

mit Oliver Sturm (DevExpress)

Delphi Code Camp

Delphi Language Up-To-Date

mit Bernd Ua (Probucon)

TMS WEB Core training

mit Bruno Fierens (tmssoftware.com bvba)

Da die Übernahme von Klassen aus dem klassischen .NET Framework in .NET Core schon mit .NET 3.0 abgeschlossen wurde, ist das Projekt One .NET also faktisch nicht mehr Teil von .NET 5.0. Das Microsoft-Marketing spricht nun von der .NET-5.0/.NET-6.0-Welle.

Wie Abbildung 1 zeigt, sollen dann in .NET 6.0 alle .NET-Anwendungsarten die gleiche Klassenbibliothek (Base Class Library, BCL) und das gleiche Software Development Kit (SDK) verwenden. Es sind aber weiterhin zwei Runtimes geplant (die bisherige .NET Core Runtime und die Mono Runtime).

Abb. 1: Die Vereinheitlichung aller .NET-Varianten kommt nun erst mit .NET 6.0.

WinUI 3 kommt auch erst 2021

Dass nicht alles auf den Erscheinungstermin von .NET 6.0 im November 2021 vertagt ist, sieht man hingegen bei WinUI 3. Nach den zwei Alphaversionen im November 2019 und Februar 2020 gab es nun eine erste als Preview bezeichnete Version, bei der die GUI-Bibliothek nun tatsächlich nicht nur auf der Windows Runtime (WinRT) als Universal-Windows-Platform-App (UWP), sondern auch auf dem Win32 API als Desktopanwendung läuft (siehe: Huber, Thomas Claudius: „Modernes WinUI für den Windows-Desktop“; in: Windows Developer 7.2020). Im letzteren Fall kommt .NET 5.0 Preview 4 (ebenfalls erschienen im Rahmen der Build 2020) zum Einsatz. Nach Preview 2 im Juni und Preview 3 im September soll es im November eine vierte Vorschauversion von WinUI 3 geben, die dann bereits eine Go-Live-Lizenz besitzen soll. Anfang 2021 könnte es dann eine Releaseversion geben.

Die WinUI-3-Bibliothek ist ein zentraler Teil des auf der Build 2020 neu verkündeten Projekts Reunion, mit dem Microsoft die seit Windows 8 getrennten Betriebssystem-APIs (Win32 und WinRT) wiedervereinen will.

Ende des Namens Xamarin

Die Firma Xamarin wurde im Februar 2016 von Microsoft übernommen. Bei der Integration in .NET 6.0 soll der Name Xamarin verschwinden. Aus Xamarin.iOS wird .NET for iOS, aus Xamarin.Android wird .NET for Android. Das XAML-basierte Xamarin Forms heißt dann .NET Multi-Platform App UI (.NET MAUI). Die bisherigen Implementierungen von Xamarin Native und Xamarin.Forms will Microsoft nach dem Erscheinen von .NET 6.0 nur noch für ein Jahr unterstützen, also voraussichtlich bis Ende 2022. Neben einer Angleichung der Klassenbibliothek und der Werkzeuge an die heute schon aus .NET Core bekannten will Microsoft dabei auch die Xamarin-Implementierung überarbeiten. Es wird also Breaking Changes geben.

MAUI klingt nach einer echten Cross-Platform-Lösung für XAML. Tatsächlich aber wird Microsoft neben den bisher von Xamarin.Forms unterstützten Plattformen Android, iOS und Windows lediglich macOS offiziell unterstützen. Linux steht bei Microsoft nicht auf dem Plan, das will man weiterhin der Community überlassen.

Neu in MAUI ist aber, dass Basis nicht mehr die Mono-Runtime, sondern die heute als .NET Core Runtime bekannte Laufzeitumgebung sein soll. Auch das Programmiermodell will Microsoft ausdehnen: MAUI wird neben der Oberflächenbeschreibung in XAML auch die Definition des GUIs in XAML mit eingebettetem C# (Razor-Syntax wie in Blazor) sowie rein in C# (nach dem Prinzip Model View Update (MVU) wie in der Programmiersprache Elm und dem UI-Toolkit Flutter) unterstützen.

WebAssembly ist fertig – AOT nicht

Microsofts neues Web-Framework Blazor WebAsssembly, mit dem .NET nun auch wieder im Webbrowser läuft, ist in einer ersten stabilen Version erschienen. Das ist nicht zu verwechseln mit Blazor Server, das bereits mit .NET Core 3.0 im September 2019 erschienen ist und in .NET Core 3.1 aktualisiert wurde. Blazor WebAssembly und Blazor Server sind alternative Softwarearchitekturmodelle für Single Page Applications mit dem gleichen Komponentenkonzept, sodass eine Weboberfläche inklusive zugehöriger UI-Steuerung leicht zwischen beiden Modellen ausgetauscht werden kann.

Die erste Blazor-WebAsssembly-Version trägt die Versionsnummer 3.2 und unterstützt das Debugging sowohl im Browser als auch Visual Studio. Allerdings sind noch nicht alle aus .NET bekannten Debuggingfunktionen verfügbar. Es funktionieren zwar Haltepunkte, aber ein automatischer Aufruf des Debuggers bei nicht behandelten Ausnahmen ist leider nicht implementiert.

Außerdem gibt es auch keine Ahead-of-Time-Kompilierung in Blazor WebAssembly. Zum Thema AOT gibt es auch bei .NET 5.0 wenig Fortschritte. Das Projekt CoreRT ist gescheitert („This is an experimental project. We have no plans to productize it in its current form.“, auf GitHub). Die neuen Source Generators in C# unterstützen das AOT-Szenario in Fällen, in denen bisher Laufzeitcodegenerierung erfolgt. Eine verbesserte Version der Single-File-App soll in .NET 5.0 erscheinen: Microsoft will nicht mehr wie bisher ein Archiv der Dateien erzeugen, sondern die Intermediate Language aus EXE und DLLs wirklich zusammenführen. Im Übrigen kam diese ernüchternde Aussage zu AOT: „We will continue evolving the native AOT as an experimental project“, Mitteilung auf GitHub.

Weitere Neuigkeiten

Bei Visual Studio 2019 ist die Version 16.6 fertig. Von Version 16.7 gibt eine erste Previewversion, u. a. mit Unterstützung von wenigen C#-9.0-Features.

C# 9.0 bietet Records als Datenstrukturen mit sehr prägnanter Syntax, weitere Features beim Pattern Matching, eine Null-Prüfung für Parameter und weitere Abkürzungen der Syntax. In Visual Studio 2019 v16.7 ist eine erste Vorschauversion von C# 9.0 enthalten, die aber nur wenige Teile der neuen Sprachfeatures beherrscht.

C# 9.0 wird zusammen mit .NET 5.0 erscheinen und auch auf .NET Core laufen, aber leider nicht mehr im klassischen .NET Framework nutzbar sein.

Der Windows Forms Designer für .NET Core ist in Version 16.7 von Visual Studio weiterhin ein unvollständiges Previewfeature. Es ist keineswegs möglich, alle Windows-Forms-Oberflächen damit zu gestalten. Der Titel des Blogeintrag „Windows Forms Designer for .NET Core Released“ im .NET Blog ist damit sehr irreführend.

Für .NET 5.0 hat Microsoft angekündigt, sowohl die Größe von .NET 5.0 in Docker-Containern zu verringern als auch die dortige Ausführungsgeschwindigkeit zu erhöhen.

Microsoft will in .NET 5.0 die Interoperabilität von .NET mit der Windows Runtime Library (WinRT) verbessern. Dazu gibt es einen neuen Codegenerator C#/WinRT. Das Ergebnis ist ein neues NuGet-Wrapper-Paket für WinRT Windows SDK .NET Package auf NuGet.org.

Die neue Eingabeaufforderung Windows Terminal ist in der Version 1.0 erschien.

Mit dem auf der Build 2020 neu vorgestellten Windows Package Manager (alias Winget, derzeit Version 0.1) will Microsoft insbesondere Softwareentwicklern auf einfache Weise ermöglichen, ihre Entwicklersysteme reproduzierbar zu installieren. Keivan Beigi hat kurz danach das Ende seines Projekts AppGet verkündet mit einigen Hintergründen zu den vorherigen Versuchen von Microsoft, ihn in die Firma zu holen.

Das Windows Subsystem for Linux (WSL) 2.0 ist in Windows 10 Version 2004 erschienen. Für die Zukunft angekündigt ist GPU-Unterstützung und die Ausführbarkeit von Linux-Anwendungen mit grafischer Benutzeroberfläche (GUI). Bisher laufen in WSL nur Linux-Konsolenanwendungen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

1 Kommentar auf "Rückschau auf die Microsoft Build 2020: One .NET kommt erst mit .NET 6.0"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Marco Griep
Gast

Microsoft schafft es immer wieder alles über den Haufen zu werfen und Ihre Plattformen neu zu erfinden. In Zeiten von agitlität ist dies nach von den Entwicklern „zumutbar“, jedoch stell ich mir immer mehr die Frage ob ich für neue Projekte tatsächlich noch auf .Net setzen soll, da ich einfach keine Zukunftssicherheit habe. Sprachen wie PHP, C++, Go-Lang sind da eher anfällig für Breaking Changes

X
- Gib Deinen Standort ein -
- or -