Nieuw in .NET 5
.NET 5 is de volgende belangrijke release van .NET Core na 3.1. Deze release heet .NET 5 in plaats van .NET Core 4 om twee redenen:
- Versienummers 4.x zijn overgeslagen om verwarring met .NET Framework 4.x te voorkomen.
- 'Core' is verwijderd uit de naam om te benadrukken dat dit de belangrijkste implementatie van .NET is. .NET 5 ondersteunt meer typen apps en meer platforms dan .NET Core of .NET Framework.
ASP.NET Core 5.0 is gebaseerd op .NET 5, maar behoudt de naam Core om verwarrend te voorkomen met ASP.NET MVC 5. Op dezelfde manier behoudt Entity Framework Core 5.0 de naam Core om verwarrend te voorkomen met Entity Framework 5 en 6.
.NET 5 bevat de volgende verbeteringen en nieuwe functies vergeleken met .NET Core 3.1:
- C# Updates
- F# updates
- Visual Basic-updates
- nieuwe functies van System.Text.Json
- apps met één bestand
- applicatie optimaliseren
- Windows Arm64- en Arm64-intrinsieke kenmerken
- Ondersteuning voor tools voor dump debugging
- De runtimebibliotheken zijn 80% geannoteerd voor nulbare referentietypen
- Prestatieverbeteringen:
.NET 5 vervangt .NET Framework niet
.NET 5 en latere versies zijn de belangrijkste implementatie van .NET, maar .NET Framework 4.x wordt nog steeds ondersteund. Er zijn geen plannen om de volgende technologieën van .NET Framework naar .NET 5 te overzetten, maar er zijn alternatieven in .NET:
Technologie | Aanbevolen alternatief |
---|---|
Webformulieren | ASP.NET Core Blazor of Razor Pages |
Windows Workflow (WF) | Elsa-Workflows |
Windows Communication Foundation
De oorspronkelijke implementatie van WCF - (Windows Communication Foundation) werd alleen ondersteund in Windows. Er is echter een clientpoort beschikbaar via de .NET Foundation. Het is volledig open source, platformoverschrijdend en ondersteund door Microsoft. Hieronder vindt u de kernpakketten van NuGet:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
De serveronderdelen die de bovengenoemde clientbibliotheken aanvullen, zijn beschikbaar via CoreWCF-. Vanaf april 2022 wordt CoreWCF officieel ondersteund door Microsoft. Overweeg voor een alternatief voor WCF echter gRPC-.
.NET 5 vervangt .NET Standard niet
Nieuwe toepassingsontwikkeling kan de net5.0
Target Framework Moniker (TFM) opgeven voor alle projecttypen, inclusief klassebibliotheken. Het delen van code tussen .NET 5-workloads is vereenvoudigd: alles wat u nodig hebt, is de net5.0
TFM.
Voor .NET 5-apps en -bibliotheken combineert en vervangt de net5.0
TFM de netcoreapp
en netstandard
TFM's. Als u echter van plan bent om code te delen tussen .NET Framework-, .NET Core- en .NET 5-workloads, kunt u dit doen door netstandard2.0
op te geven als uw TFM. Zie .NET Standard-voor meer informatie.
C#-updates
Ontwikkelaars die .NET 5-apps schrijven, hebben toegang tot de nieuwste C#-versie en -functies. .NET 5 is gekoppeld aan C# 9, wat veel nieuwe functies aan de taal biedt. Hier volgen enkele hoogtepunten:
Records: Referentietypen met op waarde gebaseerde gelijkheidssemantiek en niet-destructieve mutatie die wordt ondersteund door een nieuwe
with
expressie.Relationeel patroon dat overeenkomt met: breidt patroonkoppelingsmogelijkheden uit naar relationele operatoren voor vergelijkende evaluaties en expressies, waaronder logische patronen, nieuwe trefwoorden
and
,or
ennot
.instructies op topniveau: Als een manier om de acceptatie en het leren van C# te versnellen, kan de methode
Main
worden weggelaten en is een toepassing zo eenvoudig als het volgende voorbeeld geldig.System.Console.Write("Hello world!");
Functie-aanwijzers: Taalconstructies die de volgende opcodes van de intermediaire taal (IL) beschikbaar maken:
ldftn
encalli
.
Zie Wat is er nieuw in C# 9voor meer informatie over de beschikbare C# 9-functies.
Brongeneratoren
Naast enkele van de gemarkeerde nieuwe C#-functies maken brongeneratoren hun weg naar ontwikkelaarsprojecten. Broncodegeneratoren staan code toe die tijdens de compilatie wordt uitgevoerd om uw programma te inspecteren en extra bestanden te produceren die samen met de rest van uw code worden gecompileerd.
Zie Introductie van C#-brongeneratoren en C#-brongeneratorvoorbeeldenvoor meer informatie over brongeneratoren.
F#-updates
F# is de functionele programmeertaal van .NET en met .NET 5 hebben ontwikkelaars toegang tot F# 5. Een van de nieuwe functies is geïnterpoleerde tekenreeksen, vergelijkbaar met geïnterpoleerde tekenreeksen in C# en zelfs JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Naast eenvoudige tekenreeksinterpolatie is er een getypte interpolatie. Bij getypte interpolatie moet een bepaald type overeenkomen met de notatieaanduiding.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Deze indeling is vergelijkbaar met de sprintf
functie waarmee een tekenreeks wordt opgemaakt op basis van invoer die veilig is.
Zie Wat is er nieuw in F# 5voor meer informatie.
Visual Basic updates
Er zijn geen nieuwe taalfuncties voor Visual Basic in .NET 5. Met .NET 5 wordt visual Basic-ondersteuning echter uitgebreid naar:
Beschrijving | parameter dotnet new |
---|---|
Console toepassing | console |
Klassebibliotheek | classlib |
WPF-toepassing | wpf |
WPF Class-bibliotheek | wpflib |
Aangepaste bibliotheek voor WPF-besturingselementen | wpfcustomcontrollib |
WPF User Control Library | wpfusercontrollib |
Windows Forms (WinForms)-applicatie | winforms |
Windows Forms -klassebibliotheek (WinForms) | winformslib |
Eenheidstestproject | mstest |
Testproject NUnit 3 | nunit |
Testitem NUnit 3 | nunit-test |
xUnit-testproject | xunit |
Zie dotnet new
voor meer informatie over projectsjablonen vanuit de .NET CLI.
System.Text.Json nieuwe functies
Er zijn nieuwe functies in en voor System.Text.Json-:
- verwijzingen behouden en circulaire verwijzingen verwerken
- Serialisatie-uitbreidingsmethoden op HttpClient
- getallen tussen aanhalingstekens toestaan of schrijven
- Ondersteuning voor onveranderbare typen en C# 9-records
- Ondersteuning bieden voor niet-openbare eigenschapstoegangsors
- ondersteuningsvelden
- eigenschappen voorwaardelijk negeren
- Ondersteuning bieden voor niet-tekenreekswoordenlijsten
- Aangepaste conversieprogramma's toestaan om null te verwerken
- JsonSerializerOptions kopiëren
- JsonSerializerOptions maken met webstandaarden