Neuerungen in .NET 5
.NET 5 ist die nächste Hauptversion von .NET Core nach 3.1. Diese Version wurde aus zwei Gründen als .NET 5 anstelle von .NET Core 4 bezeichnet:
- Versionsnummer 4.x wurde übersprungen, um Verwirrung mit .NET Framework 4.x zu vermeiden.
- "Core" wurde aus dem Namen entfernt, um hervorzuheben, dass dies die Hauptimplementierung von .NET in Zukunft ist. .NET 5 unterstützt mehr Arten von Apps und mehr Plattformen als .NET Core oder .NET Framework.
ASP.NET Core 5.0 basiert auf .NET 5, behält jedoch den Namen "Core" bei, um eine Verwechslung mit ASP.NET MVC 5 zu vermeiden. Ebenso behält Entity Framework Core 5.0 den Namen "Core" bei, um Verwechslungen mit Entity Framework 5 und 6 zu vermeiden.
.NET 5 enthält die folgenden Verbesserungen und neuen Features im Vergleich zu .NET Core 3.1:
- C#-Updates
- F#-Updates
- Visual Basic-Updates
- System.Text.Json neue Features
- Einzelne Datei-Apps
- App Trimming
- Windows Arm64 und Arm64-Intrinsics
- Toolunterstützung für das Debuggen von Speicherabbilddateien
- Runtimebibliotheken sind für Nullable-Verweistypen zu 80 Prozent mit Anmerkungen versehen
- Leistungsverbesserungen:
.NET 5 ersetzt .NET Framework nicht
.NET 5 und höhere Versionen sind die Hauptimplementierung von .NET in Zukunft, aber .NET Framework 4.x wird weiterhin unterstützt. Es gibt keine Pläne, die folgenden Technologien von .NET Framework zu .NET 5 zu portieren, aber es gibt Alternativen in .NET:
Technologie | Empfohlene Alternative |
---|---|
Webformulare | ASP.NET Core Blazor oder Razor Pages |
Windows Workflow (WF) | Elsa-Workflows |
Windows Communication Foundation
Die ursprüngliche Implementierung von Windows Communication Foundation (WCF) wurde nur unter Windows unterstützt. Es gibt jedoch einen Clientport, der über .NET Foundation verfügbar ist. Es ist vollständig Open Source-, plattformübergreifend und von Microsoft unterstützt. Die Kern-NuGet-Pakete sind unten 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 CoreWCFverfügbar. Ab April 2022 wird CoreWCF offiziell von Microsoft unterstützt. Als Alternative zu WCF können Sie jedoch gRPC in Betracht ziehen.
.NET 5 ersetzt .NET Standard nicht
Neue Anwendungsentwicklung kann den net5.0
Target Framework Moniker (TFM) für alle Projekttypen angeben, einschließlich Klassenbibliotheken. Das Teilen von Code zwischen .NET 5-Workloads ist vereinfacht: Alles, was Sie benötigen, ist die net5.0
TFM.
Für .NET 5-Apps und -Bibliotheken kombiniert und ersetzt der net5.0
TFM die netcoreapp
und netstandard
TFMs. Wenn Sie jedoch Beabsichtigen, 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 -Features. .NET 5 ist mit C# 9 gekoppelt, was viele neue Features in die Sprache bringt. Hier sind einige Highlights:
Records: Referenztypen mit wertbasierter Gleichheitssemantik und nicht-destruktiver Mutation, unterstützt durch einen neuen
with
Ausdruck.Relationales 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 auf oberster Ebene: Als Mittel zur Beschleunigung der Einführung und des Lernens von C# kann die
Main
Methode weggelassen werden, und eine Anwendung ist so einfach wie das folgende Beispiel gültig:System.Console.Write("Hello world!");
Funktionszeiger: Sprachkonstrukte, die die folgenden Intermediate Language (IL) Opcodes offenlegen:
ldftn
undcalli
.
Weitere Informationen zu den verfügbaren C#9-Features finden Sie unter Neuigkeiten in C# 9.
Quellgeneratoren
Neben einigen der hervorgehobenen neuen C#-Features machen Quellgeneratoren ihren Weg in Entwicklerprojekte. Quellcode-Generatoren ermöglichen es Code, der während der Kompilierung ausgeführt wird, Ihr Programm zu prüfen und zusätzliche Dateien zu erzeugen, die zusammen mit dem restlichen Code kompiliert werden.
Weitere Informationen zu Quellgeneratoren finden Sie unter Einführung in C#-Quellgeneratoren und C#-Quellgeneratorbeispiele.
F#-Updates
F# ist die .NET-Funktionale Programmiersprache, und mit .NET 5 haben Entwickler Zugriff auf F# 5. Eines der neuen Features ist interpolierte Zeichenfolgen, ähnlich wie interpolierte Zeichenfolgen in C# und sogar JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Zusätzlich zur grundlegenden String-Interpolation existiert 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 |
WPF-Benutzersteuerungsbibliothek | wpfusercontrollib |
Windows Forms (WinForms)-Anwendung | winforms |
Windows Forms (WinForms) Klassenbibliothek | winformslib |
Komponententestprojekt | mstest |
NUnit 3 Test Project | nunit |
NUnit 3 Testelement | nunit-test |
xUnit-Testprojekt | xunit |
Weitere Informationen zu Projektvorlagen aus der .NET CLI finden Sie unter dotnet new
.
Neue Features von System.Text.Json
Es gibt neue Features in und für System.Text.Json:
- Beibehaltung von Referenzen und Behandlung von zirkulären Referenzen
- Erweiterungsmethoden zur Serialisierung für HttpClient
- Zulassen oder Schreiben von Zahlen in Anführungszeichen
- Unterstützung von unveränderlichen Typen und C# 9 Records
- Unterstützung nicht-öffentlicher Eigenschafts-Accessors
- Unterstützung von Feldern
- Eigenschaften bedingt ignorieren
- Unterstützung von Nicht-Zeichenfolgen-Wörterbüchern
- Zulassen, dass benutzerdefinierte Konverter null- verarbeiten
- JsonSerializerOptions kopieren
- Erstellen von JsonSerializerOptions mit Web-Standardwerten