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:
- C#-uppdateringar
- F#-uppdateringar
- Visual Basic-uppdateringar
- System.Text.Json nya funktioner
- Appar med en fil
- Apptrimning
- Windows Arm64 och Arm64 inbyggda
- Verktygsstöd för dumpfelsökning
- Körningsbiblioteken är 80 % kommenterade för null-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-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:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
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.0
bibliotek 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
,or
ochnot
.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
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ä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:
- Bevara referenser och hantera cirkelreferenser
- HttpClient- och HttpContent-tilläggsmetoder
- Tillåt eller skriva 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 webbstandarder