Nyheter i .NET 5
.NET 5 är nästa större version av .NET Core efter 3.1. Den här versionen hette .NET 5 i stället för .NET Core 4 av två skäl:
- Versionsnummer 4.x hoppades över för att undvika förvirring med .NET Framework 4.x.
- "Core" togs bort 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:
- C#-uppdateringar
- F#-uppdateringar
- Visual Basic-uppdateringar
- System.Text.Json nya funktioner
- Appar med en enda fil
- App trimning
- Windows Arm64 och Arm64 intrinsikfunktioner
- Verktygsstöd för dumpfelsökning
- Körningsbiblioteken är 80% annoterade för nullbara referenstyper
- Prestandaförbättringar:
.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-Workflows |
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 open source, plattformsoberoende och stöds av Microsoft. Kärnpaketen för NuGet visas nedan:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
Serverkomponenterna 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 appar och bibliotek i .NET 5 kombinerar och ersätter net5.0
TFM både netcoreapp
och netstandard
TFM. Men om du planerar att dela kod mellan .NET Framework-, .NET Core- och .NET 5-arbetsbelastningar kan du göra det genom att ange netstandard2.0
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:
Records: Referenstyper med värdebaserad likhetssemantik och icke-destruktiv mutation som stöds av ett nytt
with
uttryck.Relationsmönstermatchning: 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
,or
ochnot
.instruktioner på toppnivå: Som ett sätt att påskynda implementeringen och inlärningen av C# kan
Main
-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 IL-opkoder (mellanliggande språk):
ldftn
ochcalli
.
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änginterpolering finns det även typad interpolering. 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 funktionen sprintf
som formaterar en sträng baserat på typsäkra indata.
Mer information finns i Vad är nytt 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-applikation | wpf |
WPF-klassbibliotek | wpflib |
Anpassad WPF-kontrollbibliotek | wpfcustomcontrollib |
WPF-användarkontrollbibliotek | wpfusercontrollib |
Windows Forms-applikation (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:
- Bevara referenser och hantera cirkelreferenser
- serialiseringstilläggsmetoder i HttpClient
- Tillåt eller skriv tal inom citattecken
- Stöd för oföränderliga typer och C# 9-poster
- Stöd för icke-offentliga egenskapsåtkomster
- Supportfält
- ignorera egenskaper villkorligt
- Stöd för ordlistor som inte är strängnycklar
- Tillåt att anpassade konverterare hanterar null-
- Kopiera JsonSerializerOptions
- Skapa JsonSerializerOptions med webbstandardinställningar