.NET 7 ist der Nachfolger von .NET 6 und legt den Schwerpunkt darauf, einheitlich, modern, einfach und schnell zu sein. .NET 7 wird 18 Monate lang als STS-Release (Standard-Term Support) unterstützt (früher als aktuelles Release bezeichnet).
Dieser Artikel listet die neuen Features von .NET 7 auf und enthält Links zu ausführlicheren Informationen zu den einzelnen Features.
Leistung ist ein wichtiger Schwerpunkt von .NET 7, und alle Features wurden unter Berücksichtigung der Leistung konzipiert. Darüber hinaus enthält .NET 7 die folgenden Verbesserungen, die rein auf Leistung ausgerichtet sind:
OSR (On-Stack Replacement) ist eine Ergänzung zur mehrstufigen Kompilierung. Dieses Feature ermöglicht der Runtime, den Code mitten in der Ausführung zu ändern, der von einer derzeit ausgeführten Methode ausgeführt wird (das heißt, während er „im Stapel“ ist). Methoden mit langer Ausführungsdauer können in der Mitte der Ausführung zu optimierten Versionen wechseln.
Profilgesteuerte Optimierung (Profile Guided Optimization, PGO) funktioniert jetzt mit OSR und ist einfacher zu aktivieren (durch Hinzufügen von <TieredPGO>true</TieredPGO> zu Ihrer Projektdatei). PGO kann auch zusätzliche Dinge instrumentieren und optimieren, z. B. Delegaten.
Verbesserte Codegenerierung für Arm64.
Native AOT generiert eine eigenständige ausführbare Datei im Dateiformat der Zielplattform ohne externe Abhängigkeiten. Sie ist vollständig nativ, ohne IL oder JIT und bietet eine schnelle Startzeit sowie eine kleine eigenständige Bereitstellung. In .NET 7 ist native AOT für Konsolen-Apps konzipiert und erfordert, dass Apps gekürzt werden.
Leistungsverbesserungen für die Mono-Runtime, die Blazor WebAssembly-, Android- und iOS-Apps unterstützt.
Einen ausführlichen Überblick über viele der leistungsorientierten Features, durch die .NET 7 so schnell ist, finden Sie im Blogbeitrag Leistungsverbesserungen in .NET 7.
System.Text.Json-Serialisierung
.NET 7 enthält Verbesserungen der System.Text.Json-Serialisierung in den folgenden Bereichen:
Vertragsanpassung gibt Ihnen mehr Kontrolle darüber, wie Typen serialisiert und deserialisiert werden. Weitere Informationen finden Sie unter Anpassen eines JSON-Vertrags.
Unterstützung für erforderliche Member, bei denen es sich um Eigenschaften handelt, die in den JSON-Nutzdaten vorhanden sein müssen, damit die Deserialisierung erfolgreich ist. Weitere Informationen finden Sie unter Erforderliche Berechtigungen.
.NET 7 und C# 11 enthalten Innovationen, mit denen Sie mathematische Vorgänge generisch ausführen können, d. h. ohne den genauen Typ kennen zu müssen, mit dem Sie arbeiten. Wenn Sie beispielsweise eine Methode schreiben möchten, die zwei Zahlen hinzufügt, mussten Sie zuvor für jeden Typ eine Überladung der Methode hinzufügen. Jetzt können Sie eine einzelne generische Methode schreiben, bei der der Typparameter auf einen zahlenähnlichen Typ beschränkt ist. Weitere Informationen finden Sie im Artikel Generische Mathematik und im Blogbeitrag Generische Mathematik.
Reguläre Ausdrücke
Die Bibliothek der regulären Ausdrücke von .NET hat in .NET 7 erhebliche Funktions- und Leistungsverbesserungen erfahren:
Die neue Option RegexOptions.NonBacktracking ermöglicht den Abgleich mithilfe eines Ansatzes, der Rückverfolgungen vermeidet und lineare Zeitverarbeitung in der Länge der Eingabe garantiert. Die Nicht-Rückverfolgungs-Engine kann nicht in einer Suche von rechts nach links verwendet werden und weist einige andere Einschränkungen auf, ist aber für alle regulären Ausdrücke und Eingaben schnell. Weitere Informationen finden Sie unter Nicht zurückverfolgender Modus.
Quellgeneratoren für reguläre Ausdrücke sind neu. Quellgeneratoren erstellen eine Engine, die zur Kompilierzeit für Ihr Muster optimiert ist und bieten Vorteile bei der Durchsatzleistung. Die ausgegebene Quelle ist Teil Ihres Projekts, sodass Sie sie anzeigen und debuggen können. Darüber hinaus werden Sie durch eine neue Quellgeneratordiagnose SYSLIB1045 auf Stellen hingewiesen,an denen Sie Regex verwenden, die in den Quellgenerator konvertiert werden können. Weitere Informationen finden Sie unter Quellgeneratoren für reguläre .NET-Ausdrücke.
Bei Suchvorgängen ohne Beachtung von Groß-/Kleinschreibung bietet .NET 7 große Leistungssteigerungen. Die Vorteile ergeben sich, weil die Angabe von RegexOptions.IgnoreCase nicht mehr ToLower für jedes Zeichen im Muster und für jedes Zeichen in der Eingabe aufruft. Stattdessen werden alle Aufgaben, die sich auf Groß-/Kleinschreibung beziehen, beim Generieren von Regex ausgeführt.
Regex unterstützt jetzt Span-Eigenschaften für einige APIs. Im Rahmen dieser Unterstützung wurden die folgenden neuen Methoden hinzugefügt:
An den .NET-Bibliotheks-APIs wurden viele Verbesserungen vorgenommen. Einige davon werden in anderen, dedizierten Abschnitten dieses Artikels genannt. Andere werden in der folgenden Tabelle zusammengefasst.
Diese APIs bedeuten, dass Sie keine Berechnungen mehr für den „Tick“-Wert durchführen müssen, um Mikrosekunden- und Nanosekundenwerte zu bestimmen. Weitere Informationen finden Sie im Blogbeitrag .NET 7 Preview 4.
APIs zum Lesen, Schreiben, Archivieren und Extrahieren von Tar-Archiven
Stream.Read kann weniger Daten zurückgeben als im Stream verfügbar sind. Die neuen ReadExactly-Methoden lesen genau die Anzahl der angeforderten Bytes, und die neuen ReadAtLeast-Methoden lesen mindestens die Anzahl der angeforderten Bytes. Weitere Informationen finden Sie im Blogbeitrag .NET 7 Preview 5.
Neue Typkonverter für DateOnly, TimeOnly, Int128, UInt128 und Half
Typkonverter werden häufig verwendet, um Werttypen in eine und aus einer Zeichenfolge zu konvertieren. Diese neuen APIs fügen Typkonverter für Typen hinzu, die kürzlich hinzugefügt wurden.
GetCurrentStatistics() ermöglicht die Verwendung von Ereigniszählern oder Metrik-APIs zum Nachverfolgen von Statistiken für mindestens einen Arbeitsspeichercache. Weitere Informationen finden Sie im Blogbeitrag .NET 7 Preview 4.
APIs zum Abrufen und Festlegen von Unix-Dateiberechtigungen
Sie können beispielsweise angeben, dass ein string-Parameter einen regulären Ausdruck erwartet, indem Sie den Parameter mit dem Attribut [StringSyntax(StringSyntaxAttribute.Regex)] versehen.
APIs für die Interoperabilität mit JavaScript bei Ausführung im Browser oder in anderen WebAssembly-Architekturen
.NET 7 verbessert den Einblick. Einblicke helfen Ihnen dabei, den Zustand Ihrer App zu verstehen, während sie skaliert wird und die technische Komplexität zunimmt. Die Einblickimplementierung von .NET basiert in erster Linie auf OpenTelemetry. Die Verbesserungen umfassen:
Das neue Activity.CurrentChanged-Ereignis, mit dem Sie erkennen können, wann sich der Span-Kontext eines verwalteten Threads ändert.
Weitere Informationen finden Sie im Blogbeitrag .NET 7 Preview 4.
.NET SDK
Das .NET 7 SDK verbessert das Arbeiten mit CLI-Vorlagen. Es ermöglicht auch die Veröffentlichung in Containern und zentrale Paketverwaltung mit NuGet.
Vorlagen
Für den dotnet new-Befehl und die Vorlagenerstellung wurden einige willkommene Verbesserungen vorgenommen.
dotnet new
Der CLI-Befehl dotnet new, mit dem ein neues Projekt, eine Konfigurationsdatei oder eine neue Projektmappe basierend auf einer Vorlage erstellt wird, unterstützt jetzt Vervollständigung mit der TAB-TASTE für die Untersuchung der folgenden Elemente:
Verfügbare Vorlagennamen
Vorlagenoptionen
Zulässige Optionswerte
Außerdem weisen die Unterbefehle install, uninstall, search, list und update für bessere Konformität nicht mehr das Präfix -- auf.
Erstellen
Mit Vorlageneinschränkungen, einem neuen Konzept für .NET 7, können Sie den Kontext definieren, in dem Ihre Vorlagen zulässig sind. Einschränkungen unterstützen die Vorlagen-Engine beider Ermittlung, welche Vorlagen in Befehlen wie dotnet new list angezeigt werden sollen. Sie können Ihre Vorlage auf ein Betriebssystem, einen Vorlagen-Engine-Host (z. B. die .NET CLI oder das Dialogfeld „Neues Projekt“ in Visual Studio) und eine installierte Workload einschränken. Sie definieren Einschränkungen in der Konfigurationsdatei Ihrer Vorlage.
In der Vorlagenkonfigurationsdatei können Sie jetzt außerdem einen Vorlagenparameter mit der Anmerkungen versehen, dass er mehrere Werte zulässt. Die web-Vorlage ermöglicht beispielsweise mehrere Authentifizierungsformen.
Weitere Informationen finden Sie im Blogbeitrag .NET 7 Preview 6.
Sie können jetzt allgemeine Abhängigkeiten in Ihren Projekten an einem Ort verwalten, indem Sie das CPM-Feature (Central Package Management, zentrale Paketverwaltung) von NuGet verwenden. Um dieses Feature zu aktivieren, fügen Sie dem Stammverzeichnis Ihres Repositorys eine Datei Directory.Packages.props hinzu. Legen Sie in dieser Datei die MSBuild-Eigenschaft ManagePackageVersionsCentrally auf fest true, und fügen Sie Versionen für allgemeine Paketabhängigkeiten mithilfe von PackageVersion-Elementen hinzu. Anschließend können Sie in den einzelnen Projektdateien Version-Attribute aus allen PackageReference-Elementen auslassen, die auf zentral verwaltete Pakete verweisen.
.NET 7 führt einen Quellgenerator für Plattformaufrufe (P/Invokes) in C# ein. Der Quellgenerator sucht nach LibraryImportAttribute für static, partial Methoden, um die Quellgenerierung von Marshallingcode zur Kompilierzeit auszulösen. Durch Generieren des Marshallingcodes zur Kompilierzeit muss kein IL-Stub zur Laufzeit generiert werden, wie es bei Verwendung von DllImportAttribute der Fall ist. Der Quellgenerator verbessert die Anwendungsleistung und ermöglicht auch, dass die App Ahead-of-Time (AOT) kompiliert wird. Weitere Informationen finden Sie unter Quellgenerierung für Plattformaufrufe und Verwenden von benutzerdefinierten Marshallern in quellgenerierten P/Invokes.
Zugehörige Releases
Dieser Abschnitt enthält Informationen zu verwandten Produkten, deren Releases mit dem Release von .NET 7 zusammenfallen.
C# 11 umfasst Unterstützung für generische Mathematik, unformatierte Zeichenfolgenliterale, dateibezogene Typen und andere neue Features. Weitere Informationen finden Sie unter Neuerungen in C# 11.
F# 7
F# 7 setzt den Weg fort, die Sprache zu vereinfachen und die Leistung und Interoperabilität mit neuen C#-Funktionen zu verbessern. Weitere Informationen finden Sie unter Ankündigung von F# 7.
.NET MAUI
.NET MAUI (Multi-Platform App UI) ist ein plattformübergreifendes Framework zum Erstellen nativer Mobil- und Desktop-Apps mit C# und XAML. Es vereint Android-, iOS-, macOS- und Windows-APIs in einer einzigen API. Informationen zu den neuesten Updates finden Sie unter Neuerungen in .NET MAUI für .NET 7.
ASP.NET Core
ASP.NET Core 7.0 umfasst ratenlimitierende Middleware, Verbesserungen an minimalen APIs und gRPC-JSON-Transcodierung. Informationen zu allen Updates finden Sie unter Neuerungen in ASP.NET Core 7.
EF Core
Entity Framework Core 7.0 umfasst anbieterunabhängige Unterstützung für JSON-Spalten, verbesserte Leistung zum Speichern von Änderungen und benutzerdefinierte Reverse Engineering-Vorlagen. Informationen zu allen Updates finden Sie unter Neuerungen in EF Core 7.0.
Windows Forms
Viel Arbeit wurde in Windows Forms für .NET 7 investiert. In den folgenden Bereichen wurden Verbesserungen vorgenommen:
WPF in .NET 7 enthält zahlreiche Fehlerbehebungen sowie Leistungs- und Barrierefreiheitsverbesserungen. Weitere Informationen finden Sie im Blogbeitrag Neuerungen für WPF in .NET 7 .
Orleans
Orleans ist ein plattformübergreifendes Framework zum Erstellen stabiler und skalierbarer verteilter Anwendungen. Weitere Informationen zu den neuesten Updates für Orleans finden Sie unter Migrieren von Orleans 3.x zu 7.0.
ML.NET enthält jetzt eine Textklassifizierungs-API, die das Trainieren benutzerdefinierter Textklassifizierungsmodelle mithilfe der neuesten Deep Learning-Techniken vereinfacht. Weitere Informationen finden Sie in den Blogbeiträgen Neuerungen bei AutoML und Tools und Einführung der ML.NET-Textklassifizierungs-API.
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: