.NET 8.0 (.NET 8)

Eintrag zuletzt aktualisiert am: 07.06.2023

.NET 8.0 ist der Nachfolger von .NET 7.0, der im November 2023 erscheinen soll.

Fakten zu .NET 8.0
… wird im November 2023 erschienen
… Nachfolger von .NET 7.0
… Long-Term-Support nur für 36 Monate
… plattformunabhängig (mit Ausnahme von WPF, Windows Forms, WinUI3 u.a. Klassen)
… sehr modular aufgebaut
… beinhaltet C# 12.0, ASP.NET Core 8.0 (inkl. Blazor 8.0) und Entity Framework Core 8.0
… komplett Open Source https://github.com/dotnet/runtime

Erschienene Preview-Versionen
14.3.2023: Preview 1
14.3.2023: Preview 2
11.4.2023: Preview 3
16.5.2023: Preview 4

Neues zum AOT-Compiler
Der in .NET 7.0 eingeführte Ahead-of-Time-Compiler "Native AOT" läuft seit Preview 1 von .NET 8.0 nun auch auf macOS. Unter Windows und Linux erzeugt Native AOT jetzt Kompilate, die bis zu 50% kleiner sind als in Version 7.0.

Bis zum Release von .NET 8.0 sollen zumindest ASP.NET Core Minimal WebAPIs [https://github.com/dotnet/aspnetcore/issues/45910] und gRPC-Services [https://github.com/dotnet/aspnetcore/issues/44984] kompilierbar sein.

Neuigkeiten in der .NET-Klassenbibliothek in .NET 8.0
  • Neue und verbesserte Objektannotationen
  • System.Environment.IsPrivilegedProcess
  • Eingefrorene Objektmengen: FrozenSet<T> und FrozenDictionary<T, T> via ToFrozenSet() und ToFrozenDictionary() in Ienumerable<T>
  • Neue Hilfsmethoden zum Auslösen von Fehlern bei falschen Parametern

ArgumentNullException.ThrowIfNull(betrag); // seit .NET 6.0
ArgumentException.ThrowIfNullOrEmpty(einheit); // seit .NET 7.0
ArgumentOutOfRangeException.ThrowIfZero(betrag.Value); // neu in .NET 8.0
ArgumentOutOfRangeException.ThrowIfNegative(prozent); // neu in .NET 8.0
ArgumentOutOfRangeException.ThrowIfNegativeOrZero(prozent); // neu in .NET 8.0
ArgumentOutOfRangeException.ThrowIfGreaterThan(prozent, 100); // neu in .NET 8.0

Neues in System.Text.Json 8.0
Der JSON-Serializer System.Text.Json Version 8.0 erhält verschiedene Erweiterungen. Dazu gehören:
  • Einstellungen zur Handhabung fehlender Informationen bei der Deserialisierung von JSON in Objekten via Annotation [JsonUnmappedMemberHandling] oder Eigenschaft UnmappedMemberHandling im Objekt JsonSerializerOptions.
  • Namenskonventionen KebabCaseLower, KebabCaseUpper, SnakeCaseLower und SnakeCaseUppter in der Enumeration JsonNamingPolicy als Alternative zum bisher fest gesetzten CamelCasing.
  • Der Source Generator für JSON (System.Text.Json.SourceGeneration.JsonSourceGenerator) unterstützt nun auch die in C# 9.0 eingeführten Init-Only-Properties und die in C# 11.0 eingeführten Required Properties.

Weitere Pläne
Sind die Inhalte hilfreich?