Nyheter i .NET 5

.NET 5 är nästa större version av .NET Core efter 3.1. Vi har döpt den här nya versionen till .NET 5 i stället för .NET Core 4 av två skäl:

  • Vi hoppades över versionsnummer 4.x för att undvika förvirring med .NET Framework 4.x.
  • Vi har tagit bort "Core" från namnet för att betona att detta är huvudimplementeringen av .NET framöver. .NET 5 stöder fler typer av appar och fler plattformar än .NET Core eller .NET Framework.

ASP.NET Core 5.0 baseras på .NET 5 men behåller namnet "Core" för att undvika att förväxla det med ASP.NET MVC 5. På samma sätt behåller Entity Framework Core 5.0 namnet "Core" för att undvika att förväxla det med Entity Framework 5 och 6.

.NET 5 innehåller följande förbättringar och nya funktioner jämfört med .NET Core 3.1:

.NET 5 ersätter inte .NET Framework

.NET 5 och senare versioner är huvudimplementeringen av .NET framöver, men .NET Framework 4.x stöds fortfarande. Det finns inga planer på att portera följande tekniker från .NET Framework till .NET 5, men det finns alternativ i .NET:

Teknik Rekommenderat alternativ
Webbformulär ASP.NET Core Blazor - eller Razor Pages
Windows-arbetsflöde (WF) Elsa-Arbetsflöden

Windows Communication Foundation

Den ursprungliga implementeringen av Windows Communication Foundation (WCF) stöds endast i Windows. Det finns dock en tillgänglig klientport från .NET Foundation. Det är helt öppen källkod, plattformsoberoende och stöds av Microsoft. Kärnpaketen för NuGet visas nedan:

De serverkomponenter som kompletterar ovan nämnda klientbibliotek är tillgängliga via CoreWCF. Från och med april 2022 stöds CoreWCF officiellt av Microsoft. För ett alternativ till WCF bör du dock överväga gRPC.

.NET 5 ersätter inte .NET Standard

Ny programutveckling kan ange net5.0 Target Framework Moniker (TFM) för alla projekttyper, inklusive klassbibliotek. Att dela kod mellan .NET 5-arbetsbelastningar är förenklat: allt du behöver är net5.0 TFM.

För .NET 5-appar och -net5.0bibliotek kombinerar och ersätter TFM:erna och netstandard TFM:ernanetcoreapp. Men om du planerar att dela kod mellan .NET Framework-, .NET Core- och .NET 5-arbetsbelastningar kan du göra det genom att netstandard2.0 ange som TFM. Mer information finns i .NET Standard.

C#-uppdateringar

Utvecklare som skriver .NET 5-appar har åtkomst till den senaste C#-versionen och funktionerna. .NET 5 är parat med C# 9, vilket ger många nya funktioner till språket. Här är några höjdpunkter:

  • Poster: Referenstyper med värdebaserad likhetssemantik och icke-destruktiv mutation som stöds av ett nytt with uttryck.

  • Matchning av relationsmönster: Utökar funktioner för mönstermatchning till relationsoperatorer för jämförande utvärderingar och uttryck, inklusive logiska mönster – nya nyckelord and, oroch not.

  • Toppnivåinstruktioner: Som ett sätt att påskynda implementeringen och inlärningen Main av C#kan metoden utelämnas och ett program så enkelt som följande exempel är giltigt:

    System.Console.Write("Hello world!");
    
  • Funktionspekare: Språkkonstruktioner som exponerar följande mellanliggande språk (IL) opcodes: ldftn och calli.

Mer information om tillgängliga C# 9-funktioner finns i Nyheter i C# 9.

Källgeneratorer

Förutom några av de markerade nya C#-funktionerna tar sig källgeneratorer in i utvecklarprojekt. Källgeneratorer tillåter kod som körs under kompilering för att inspektera programmet och skapa ytterligare filer som kompileras tillsammans med resten av koden.

Mer information om källgeneratorer finns i Introduktion till C#-källgeneratorer och C#-källgeneratorexempel.

F#-uppdateringar

F# är det funktionella programmeringsspråket för .NET och med .NET 5 har utvecklare åtkomst till F# 5. En av de nya funktionerna är interpolerade strängar, ungefär som interpolerade strängar i C#, och till och med JavaScript.

let name = "David"
let age = 36
let message = $"{name} is {age} years old."

Förutom grundläggande stränginterpolation finns det skrivet interpolation. Med typinterpolation måste en viss typ matcha formatspecificeraren.

let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."

Det här formatet liknar den sprintf funktion som formaterar en sträng baserat på typsäkra indata.

Mer information finns i Nyheter i F# 5.

Visual Basic-uppdateringar

Det finns inga nya språkfunktioner för Visual Basic i .NET 5. Men med .NET 5 utökas Visual Basic-stödet till att:

beskrivning dotnet new Parametern
Konsolprogram console
Klassbibliotek classlib
WPF-program wpf
WPF-klassbibliotek wpflib
ANPASSAT WPF-kontrollbibliotek wpfcustomcontrollib
WPF-användarkontrollbibliotek wpfusercontrollib
Windows Forms-program (WinForms) winforms
Windows Forms-klassbibliotek (WinForms) winformslib
Projekt för enhetstest mstest
NUnit 3-testprojekt nunit
NUnit 3-testobjekt nunit-test
xUnit-testprojekt xunit

Mer information om projektmallar från .NET CLI finns i dotnet new.

System.Text.Json nya funktioner

Det finns nya funktioner i och för System.Text.Json:

Se även