Nieuw in .NET 7

.NET 7 is de opvolger van .NET 6 en richt zich op geïntegreerd, modern, eenvoudig en snel. .NET 7 wordt gedurende 18 maanden ondersteund als een STS-release (Standard-Term Support) (voorheen bekend als een huidige release).

In dit artikel vindt u een overzicht van de nieuwe functies van .NET 7 en vindt u koppelingen naar gedetailleerdere informatie.

Als u alle .NET-artikelen wilt vinden die zijn bijgewerkt voor .NET 7, raadpleegt u .NET-documenten: wat is er nieuw voor de .NET 7-release.

Prestaties

Prestaties is een belangrijke focus op .NET 7 en alle functies zijn ontworpen met de prestaties in het achterhoofd. Daarnaast bevat .NET 7 de volgende verbeteringen die uitsluitend gericht zijn op prestaties:

  • On-stack vervanging (OSR) is een aanvulling op gelaagde compilatie. Hiermee kan de runtime de code wijzigen die wordt uitgevoerd door een momenteel actieve methode in het midden van de uitvoering (dat wil gezegd, terwijl deze 'op stapel' staat). Langlopende methoden kunnen overschakelen naar meer geoptimaliseerde versies tijdens de uitvoering.
  • Profielgestuurde optimalisatie (PGO) werkt nu met OSR en is eenvoudiger in te schakelen (door toe te voegen <TieredPGO>true</TieredPGO> aan uw projectbestand). PGO kan ook aanvullende dingen instrumenteert en optimaliseren, zoals gemachtigden.
  • Verbeterde codegeneratie voor Arm64.
  • Systeemeigen AOT produceert een zelfstandig uitvoerbaar bestand in de bestandsindeling van het doelplatform zonder externe afhankelijkheden. Het is volledig systeemeigen, zonder IL of JIT en biedt snelle opstarttijd en een kleine, zelfstandige implementatie. In .NET 7 richt Native AOT zich op console-apps en moeten apps worden ingekort.
  • Prestatieverbeteringen in de Mono-runtime, die Blazor WebAssembly-, Android- en iOS-apps mogelijk maakt.

Voor een gedetailleerd overzicht van veel van de prestatiegerichte functies die .NET 7 zo snel maken, raadpleegt u de blogpost Prestatieverbeteringen in .NET 7 .

System.Text.Json serialisatie

.NET 7 bevat verbeteringen in System.Text.Json-serialisatie op de volgende gebieden:

  • Met contractaanpassing hebt u meer controle over hoe typen worden geserialiseerd en gedeserialiseerd. Zie Een JSON-contract aanpassen voor meer informatie.
  • Polymorfische serialisatie voor door de gebruiker gedefinieerde typehiërarchieën. Zie Eigenschappen van afgeleide klassen serialiseren voor meer informatie.
  • Ondersteuning voor vereiste leden, die eigenschappen zijn die aanwezig moeten zijn in de JSON-nettolading om deserialisatie te voltooien. Zie Vereiste eigenschappen voor meer informatie.

Zie het blogbericht Wat is er nieuw in System.Text.Json in .NET 7 voor informatie over deze en andere updates.

Algemene wiskunde

.NET 7 en C# 11 bevatten innovaties waarmee u algemene wiskundige bewerkingen kunt uitvoeren, dat wil zeggen, zonder dat u het exacte type hoeft te kennen waarmee u werkt. Als u bijvoorbeeld een methode wilt schrijven waarmee twee getallen worden opgetellen, moest u eerder een overbelasting van de methode voor elk type toevoegen. U kunt nu één algemene methode schrijven, waarbij de typeparameter is beperkt tot een getalachtig type. Zie het algemene wiskundige artikel en het blogbericht Algemene wiskunde voor meer informatie.

Reguliere expressies

. De bibliotheek met reguliere expressies van NET heeft aanzienlijke functionele en prestatieverbeteringen in .NET 7 gezien:

  • De nieuwe optie RegexOptions.NonBacktracking maakt het mogelijk om te vergelijken met behulp van een methode die backtracking voorkomt en lineaire tijdverwerking garandeert in de lengte van de invoer. De niet-backtracking-engine kan niet worden gebruikt in een zoekactie van rechts naar links en heeft enkele andere beperkingen, maar is snel voor alle reguliere expressies en invoer. Zie de modus Nonbacktracking voor meer informatie.

  • Brongeneratoren voor reguliere expressies zijn nieuw. Brongeneratoren bouwen een engine die tijdens het compileren is geoptimaliseerd voor uw patroon, wat de voordelen van doorvoerprestaties biedt. De bron die wordt verzonden, maakt deel uit van uw project, zodat u deze kunt bekijken en fouten kunt opsporen. Daarnaast ontvangt u een nieuwe diagnostische SYSLIB1045 waarschuwing voor de brongenerator op plaatsen die u kunt gebruiken Regex die kunnen worden geconverteerd naar de brongenerator. Zie .NET-brongeneratoren voor reguliere expressies voor meer informatie.

  • Voor niet-hoofdlettergevoelige zoekopdrachten bevat .NET 7 grote prestatieverbeteringen. De voordelen komen omdat het opgeven van RegexOptions.IgnoreCase elk teken in het patroon en op elk teken in de invoer niet meer aanroept ToLower . In plaats daarvan wordt al het hoofdlettergerelateerde werk uitgevoerd wanneer de Regex constructie wordt uitgevoerd.

  • Regex ondersteunt nu spans voor sommige API's. De volgende nieuwe methoden zijn toegevoegd als onderdeel van deze ondersteuning:

Zie de blogpost Regular expression improvements in .NET 7 voor meer informatie over deze en andere verbeteringen.

.NET-bibliotheken

Er zijn veel verbeteringen aangebracht in .NET-bibliotheek-API's. Sommige worden vermeld in andere, speciale secties van dit artikel. Sommige andere worden samengevat in de volgende tabel.

Beschrijving API's Meer informatie
Ondersteuning voor microseconden en nanoseconden inTimeSpan, TimeOnlyen DateTimeDateTimeOffset typen - DateTime.Microsecond
- DateTime.Nanosecond
- DateTime.AddMicroseconds(Double)
- Overbelasting van nieuwe DateTime constructor

- DateTimeOffset.Microsecond
- DateTimeOffset.Nanosecond
- DateTimeOffset.AddMicroseconds(Double)
- Overbelasting van nieuwe DateTimeOffset constructor

- TimeOnly.Microsecond
- TimeOnly.Nanosecond

- TimeSpan.Microseconds
- TimeSpan.Nanoseconds
- TimeSpan.FromMicroseconds(Double)
- En anderen...
Deze API's betekenen dat u geen berekeningen meer hoeft uit te voeren op de 'tick'-waarde om microseconde- en nanosecondewaarden te bepalen. Zie het blogbericht .NET 7 Preview 4 voor meer informatie.
API's voor het lezen, schrijven, archiveren en extraheren van Tar-archieven System.Formats.Tar Zie de blogposts .NET 7 Preview 4 en .NET 7 Preview 6 voor meer informatie.
Frequentiebeperking van API's om een resource te beveiligen door verkeer op een veilig niveau te houden RateLimiteren anderen in het NuGet-pakket System.Threading.RateLimiting Zie Rate limit an HTTP handler in .NET and Announcing rate limiting for .NET voor meer informatie.
API's voor het lezen van alle gegevens uit een Stream - Stream.ReadExactly
- Stream.ReadAtLeast
Stream.Read kan minder gegevens retourneren dan beschikbaar is in de stream. De nieuwe ReadExactly methoden lezen precies het aantal aangevraagde bytes en de nieuwe ReadAtLeast methoden lezen ten minste het aantal aangevraagde bytes. Zie het blogbericht .NET 7 Preview 5 voor meer informatie.
Conversieprogramma's voor nieuwe typen voor DateOnly, TimeOnly, Int128en UInt128Half In de System.ComponentModel naamruimte:

- DateOnlyConverter
- TimeOnlyConverter
- Int128Converter
- UInt128Converter
- HalfConverter
Typeconversieprogramma's worden vaak gebruikt om waardetypen naar en van een tekenreeks te converteren. Deze nieuwe API's voegen typeconversieprogramma's toe voor typen die onlangs zijn toegevoegd.
Ondersteuning voor metrische gegevens voor IMemoryCache - MemoryCacheStatistics
- MemoryCache.GetCurrentStatistics()
GetCurrentStatistics() hiermee kunt u gebeurtenistellers of API's voor metrische gegevens gebruiken om statistieken bij te houden voor een of meer geheugencaches. Zie het blogbericht .NET 7 Preview 4 voor meer informatie.
API's voor het ophalen en instellen van Unix-bestandsmachtigingen - System.IO.UnixFileMode Enum
- File.GetUnixFileMode
- File.SetUnixFileMode
- FileSystemInfo.UnixFileMode
- Directory.CreateDirectory(String, UnixFileMode)
- FileStreamOptions.UnixCreateMode
Zie het blogbericht .NET 7 Preview 7 voor meer informatie.
Kenmerk om aan te geven wat voor soort syntaxis er wordt verwacht in een tekenreeks StringSyntaxAttribute U kunt bijvoorbeeld opgeven dat een string parameter een reguliere expressie verwacht door de parameter toe te rekenen aan [StringSyntax(StringSyntaxAttribute.Regex)].
API's voor interoperabiliteit met JavaScript bij uitvoering in de browser of andere WebAssembly-architecturen System.Runtime.InteropServices.JavaScript JavaScript-apps kunnen de uitgebreide webassembly-ondersteuning in .NET 7 gebruiken om .NET-bibliotheken opnieuw te gebruiken vanuit JavaScript. Zie .NET gebruiken vanuit een JavaScript-app in .NET 7 voor meer informatie.

Waarneembaarheid

.NET 7 zorgt voor verbeteringen in waarneembaarheid. Waarneembaarheid helpt u inzicht te hebben in de status van uw app wanneer deze wordt geschaald en naarmate de technische complexiteit toeneemt. . De waarneembaarheidsimplementatie van NET is voornamelijk gebouwd rond OpenTelemetry. Verbeteringen zijn onder meer:

Zie het blogbericht .NET 7 Preview 4 voor meer informatie.

.NET SDK

De .NET 7 SDK verbetert de CLI-sjabloonervaring. Het maakt het ook mogelijk om te publiceren naar containers en centraal pakketbeheer met NuGet.

Sjablonen

Er zijn enkele welkome verbeteringen aangebracht in de dotnet new opdracht en het ontwerpen van sjablonen.

dotnet nieuw

De dotnet new CLI-opdracht, waarmee een nieuw project, configuratiebestand of een nieuwe oplossing wordt gemaakt op basis van een sjabloon, ondersteunt nu het voltooien van tabbladen voor het verkennen:

  • Beschikbare sjabloonnamen
  • Sjabloonopties
  • Toegestane optiewaarden

Bovendien hebben -- de updateinstalluninstallsearchlistsubopdrachten voor een betere conformiteit het voorvoegsel niet meer.

Ontwerpen

Met sjabloonbeperkingen, een nieuw concept voor .NET 7, kunt u de context definiëren waarin uw sjablonen zijn toegestaan. Beperkingen helpen de sjabloonengine te bepalen welke sjablonen moeten worden weergegeven in opdrachten zoals dotnet new list. U kunt uw sjabloon beperken tot een besturingssysteem, een sjabloon-enginehost (bijvoorbeeld het dialoogvenster .NET CLI of het dialoogvenster Nieuw project in Visual Studio) en een geïnstalleerde workload. U definieert beperkingen in het configuratiebestand van uw sjabloon.

Ook in het sjabloonconfiguratiebestand kunt u nu aantekeningen toevoegen aan een sjabloonparameter omdat meerdere waarden zijn toegestaan. De sjabloon staat bijvoorbeeld web meerdere vormen van verificatie toe.

Zie het blogbericht .NET 7 Preview 6 voor meer informatie.

Publiceren naar een container

Containers zijn een van de eenvoudigste manieren om een groot aantal toepassingen en services in de cloud te distribueren en uit te voeren. Containerinstallatiekopieën zijn nu een ondersteund uitvoertype van de .NET SDK en u kunt containerversies van uw toepassingen maken met behulp van dotnet publish. Zie Aankondiging van ingebouwde containerondersteuning voor de .NET SDK voor meer informatie over de functie. Zie Een .NET-app containeriseren met dotnet publish voor een zelfstudie.

Centraal pakketbeheer

U kunt nu algemene afhankelijkheden in uw projecten beheren vanaf één locatie met behulp van de CPM-functie (Central Package Management) van NuGet. Als u dit wilt inschakelen, voegt u een bestand Directory.Packages.props toe aan de hoofdmap van uw opslagplaats. In dit bestand stelt u de eigenschap ManagePackageVersionsCentrally MSBuild in op true en voegt u versies toe voor algemene pakketafhankelijkheid met behulp van PackageVersion items. Vervolgens kunt u in de afzonderlijke projectbestanden kenmerken weglaten Version uit alle PackageReference-items die verwijzen naar centraal beheerde pakketten.

Zie Central-pakketbeheer voor meer informatie.

P/Brongeneratie aanroepen

.NET 7 introduceert een brongenerator voor platform-aanroepen (P/Invokes) in C#. De brongenerator zoekt naar LibraryImportAttribute on static- en partial methoden voor het activeren van het genereren van compileertijdbronnen van marshallingcode. Door de marshallcode tijdens het compileren te genereren, hoeft er tijdens runtime geen IL-stub te worden gegenereerd, net als bij gebruik DllImportAttribute. De brongenerator verbetert de prestaties van de toepassing en stelt de app ook in staat om vooraf (AOT) te worden gecompileerd. Zie Brongeneratie voor platform-aanroepen en aangepaste marshallers gebruiken in door de bron gegenereerde P/Invokes voor meer informatie.

Deze sectie bevat informatie over gerelateerde producten met releases die samenvallen met de .NET 7-release.

Visual Studio 2022 versie 17.4

Zie Wat is er nieuw in Visual Studio 2022 voor meer informatie.

C# 11

C# 11 bevat ondersteuning voor algemene wiskundige, letterlijke tekenreeksen, bestandstypen en andere nieuwe functies. Zie wat er nieuw is in C# 11 voor meer informatie.

F# 7

F# 7 gaat verder met het traject om de taal eenvoudiger te maken en de prestaties en interop met nieuwe C#-functies te verbeteren. Zie Aankondiging van F# 7 voor meer informatie.

.NET MAUI

.NET Multi-Platform App UI (.NET MAUI) is een platformoverschrijdend framework voor het maken van systeemeigen mobiele en desktop-apps met C# en XAML. Het integreert Android-, iOS-, macOS- en Windows-API's in één API. Zie Wat is er nieuw in .NET MAUI voor .NET 7 voor meer informatie over de nieuwste updates.

ASP.NET Core

ASP.NET Core 7.0 bevat snelheidsbeperking middleware, verbeteringen in minimale API's en gRPC JSON-transcodering. Zie Wat is er nieuw in ASP.NET Core 7 voor informatie over alle updates.

EF Core

Entity Framework Core 7.0 bevat provideragnostische ondersteuning voor JSON-kolommen, verbeterde prestaties voor het opslaan van wijzigingen en aangepaste reverse-engineeringsjablonen. Zie Wat is er nieuw in EF Core 7.0 voor informatie over alle updates.

Windows Forms

Er is veel werk verricht in Windows Forms voor .NET 7. Er zijn verbeteringen aangebracht op de volgende gebieden:

  • Toegankelijkheid
  • Hoge DPI en schalen
  • Databinding

Zie Wat is er nieuw in Windows Forms in .NET 7 voor meer informatie.

WPF

WPF in .NET 7 bevat tal van bugfixes, evenals prestatie- en toegankelijkheidsverbeteringen. Zie het blogbericht Wat is er nieuw voor WPF in .NET 7 voor meer informatie.

Orleans

Orleans is een platformoverschrijdend framework voor het bouwen van robuuste, schaalbare gedistribueerde toepassingen. Zie Migreren van Orleans 3.x naar 7.0 voor informatie over de nieuwste updates voorOrleans.

.NET Upgrade Assistant en CoreWCF

De .NET-upgradeassistent ondersteunt nu het upgraden van WCF-apps aan de serverzijde naar CoreWCF. Dit is een door de community gemaakte poort van WCF naar .NET (Core). Zie Een WCF-project aan de serverzijde upgraden om CoreWCF te gebruiken voor meer informatie.

ML.NET

ML.NET bevat nu een API voor tekstclassificatie waarmee u eenvoudig aangepaste modellen voor tekstclassificatie kunt trainen met behulp van de nieuwste geavanceerde deep learning-technieken. Zie voor meer informatie de nieuwe functies voor AutoML en hulpprogramma's en introductie van de blogposts van de ML.NET Text Classification-API .

Zie ook