Neuigkeiten in .NET 5
.NET 5 ist das nächste Hauptrelease von .NET Core nach Version 3.1. Dieses Release wurde aus zwei Gründen .NET 5 anstelle von .NET Core 4 benannt:
- Versionsnummer 4.x wurde übersprungen, um Verwirrung im Zusammenhang mit .NET Framework 4.x zu vermeiden.
- Zudem wurde „Core“ im Namen ausgelassen, um zu verdeutlichen, dass dies künftig die Hauptimplementierung von .NET ist. .NET 5 unterstützt mehr App-Typen und Plattformen als .NET Core oder das .NET Framework.
ASP.NET Core 5.0 basiert auf .NET 5, behält aber die Bezeichnung „Core“ bei, um eine Verwechslung mit ASP.NET MVC 5 zu vermeiden. Ebenso behält Entity Framework Core 5.0 die Bezeichnung „Core“ bei, um eine Verwechslung mit Entity Framework 5 und 6 zu vermeiden.
.NET 5 umfasst die folgenden Verbesserungen und neuen Features im Vergleich zu .NET Core 3.1:
- C#-Updates
- F#-Updates
- Visual Basic-Updates
- Neue System.Text.Json-Features
- Einzeldatei-Apps
- App-Trimming
- Windows Arm64-Funktionen und intrinsische Arm64-Funktionen
- Toolunterstützung für das Debuggen von Speicherabbilddateien
- Runtimebibliotheken sind für Nullable-Verweistypen zu 80 Prozent mit Anmerkungen versehen
- Leistungsverbesserungen:
.NET 5 ersetzt nicht das .NET Framework
.NET 5 und höhere Versionen sind in Zukunft die Hauptimplementierung von .NET, aber .NET Framework 4.x wird weiterhin unterstützt. Es ist nicht geplant, die folgenden Technologien aus .NET Framework in .NET 5 zu portieren, aber es gibt Alternativen in .NET:
Technologie | Empfohlene Alternative |
---|---|
Web Forms | ASP.NET Core Blazor oder Razor Pages |
Windows Workflow (WF) | Elsa-Workflows |
Windows Communication Foundation
Die ursprüngliche Implementierung der Windows Communication Foundation (WCF) wurde nur unter Windows unterstützt. Es ist jedoch ein Clientport von der .NET Foundation verfügbar. Dieser ist plattformübergreifend, vollständig Open-Source-basiert und wird von Microsoft unterstützt. Die wichtigsten NuGet-Pakete werden im Folgenden aufgeführt:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
Die Serverkomponenten, die die oben genannten Clientbibliotheken ergänzen, sind über CoreWCF verfügbar. Seit April 2022 wird CoreWCF offiziell von Microsoft unterstützt. Als Alternative zu WCF können Sie jedoch gRPC in Betracht ziehen.
.NET 5 ersetzt nicht .NET Standard
Bei der Entwicklung neuer Anwendungen kann der Zielframeworkmoniker (Target Framework Moniker, TFM) net5.0
für alle Projekttypen angegeben werden, einschließlich Klassenbibliotheken. Das Freigeben von Code zwischen .NET 5-Workloads wird vereinfacht: Sie benötigen lediglich den TFM net5.0
.
Für .NET 5-Apps und -Bibliotheken kombiniert und ersetzt der TFM net5.0
die TFMs netcoreapp
und netstandard
. Wenn Sie jedoch planen, Code zwischen .NET Framework-, .NET Core- und .NET 5-Workloads freizugeben, können Sie dies tun, indem Sie netstandard2.0
als TFM angeben. Weitere Informationen finden Sie unter .NET Standard.
C#-Updates
Entwickler, die .NET 5-Apps schreiben, haben Zugriff auf die neueste C#-Version und die neuesten Features. .NET 5 ist mit C# 9 gekoppelt, wodurch viele neue Features für die Sprache genutzt werden können. Dies sind einige Highlights:
Datensätze: Verweistypen mit wertbasierter Gleichheitssemantik und nicht destruktiver Mutation, die von einem neuen
with
-Ausdruck unterstützt werden.Relationaler Musterabgleich: Erweitert Musterabgleichsfunktionen auf relationale Operatoren für vergleichende Auswertungen und Ausdrücke, einschließlich logischer Muster – neue Schlüsselwörter:
and
,or
undnot
.Anweisungen der obersten Ebene: Um die Einführung und das Erlernen von C# zu beschleunigen, kann die
Main
-Methode weggelassen werden. Eine einfache Anwendung, wie die im folgenden Beispiel gezeigte, ist gültig:System.Console.Write("Hello world!");
Funktionszeiger: Sprachkonstrukte, die die folgenden Opcodes der Zwischensprache (Intermediate Language, IL) verfügbar machen:
ldftn
undcalli
.
Weitere Informationen zu den verfügbaren C# 9-Features finden Sie unter Neuerungen in C# 9.0.
Quellcode-Generatoren
Zusätzlich zu einigen der hervorgehobenen neuen C#-Features finden auch Quellgeneratoren ihren Weg in Entwicklerprojekte. Quellgeneratoren ermöglichen es Code, der während der Kompilierung ausgeführt wird, Ihr Programm zu überprüfen und zusätzliche Dateien zu generieren, die zusammen mit dem restlichen Code kompiliert werden.
Weitere Informationen zu Quellgeneratoren finden Sie unter Einführung in C#-Quellgeneratoren und Beispiele für C#-Quellcodegeneratoren.
F#-Updates
F# ist die funktionale Programmiersprache von .NET, und mit .NET 5 haben Entwickler Zugriff auf F# 5. Eines der neuen Features sind interpolierte Zeichenfolgen, die interpolierten Zeichenfolgen in C# und sogar JavaScript ähneln.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Zusätzlich zur grundlegenden Zeichenfolgeninterpolation gibt es eine typisierte Interpolation. Bei der typisierten Interpolation muss ein angegebener Typ mit dem Formatbezeichner übereinstimmen.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Dieses Format ähnelt der sprintf
-Funktion, die eine Zeichenfolge basierend auf typsicheren Eingaben formatiert.
Weitere Informationen finden Sie unter Neuerungen in F# 5.
Visual Basic-Updates
Es gibt keine neuen Sprachfeatures für Visual Basic in .NET 5. Mit .NET 5 wird die Visual Basic-Unterstützung jedoch auf Folgendes erweitert:
BESCHREIBUNG | dotnet new -Parameter |
---|---|
Konsolenanwendung | console |
Klassenbibliothek | classlib |
WPF-Anwendung | wpf |
WPF-Klassenbibliothek | wpflib |
WPF-Benutzerdefinierte Steuerelementbibliothek | wpfcustomcontrollib |
Bibliothek mit WPF-Benutzersteuerelementen | wpfusercontrollib |
Windows Forms-Anwendung (WinForms) | winforms |
Windows Forms-Klassenbibliothek (WinForms) | winformslib |
Komponententestprojekt | mstest |
NUnit 3-Testprojekt | nunit |
NUnit 3-Testelement | nunit-test |
xUnit-Testprojekt | xunit |
Weitere Informationen zu Projektvorlagen über die .NET-CLI finden Sie unter dotnet new
.
Neue System.Text.Json-Features
Es gibt neue Features in und für System.Text.Json:
- Beibehalten von Verweisen und Behandeln von Zirkelbezügen
- Erweiterungsmethoden für HttpClient und HttpContent
- Zulassen oder Schreiben von Zahlen in Anführungszeichen
- Verwenden unveränderlicher Typen und C# 9-Datensätze
- Verwenden nicht öffentlicher Eigenschaftenaccessoren
- Einschließen von Feldern
- Ignorieren von Eigenschaften mit System.Text.Json
- Wörterbuch mit Schlüssel, der keine Zeichenfolgen ist
- Behandeln von NULL-Werten
- Kopieren von JsonSerializerOptions
- Webstandardwerte für JsonSerializerOptions