Novità di .NET 5
.NET 5 è la prossima principale versione di .NET Core, dopo la 3.1. Questa nuova versione è stata denominata .NET 5 anziché .NET Core 4 per due motivi:
- Sono stati ignorati i numeri di versione 4.x per evitare confusione con .NET Framework 4.x.
- È stato eliminato "Core" dal nome per sottolineare che si tratta dell'implementazione principale di .NET in futuro. .NET 5 supporta più tipi di app e più piattaforme rispetto a .NET Core o .NET Framework.
ASP.NET Core 5.0 si basa su .NET 5, ma mantiene il nome "Core" per evitare confusione con ASP.NET MVC 5. Analogamente, Entity Framework Core 5.0 mantiene il nome "Core" per evitare confusione con Entity Framework 5 e 6.
.NET 5 include i miglioramenti seguenti e le nuove funzionalità rispetto a .NET Core 3.1:
- Aggiornamenti di C#
- Aggiornamenti di F#
- Aggiornamenti di Visual Basic
- Nuove funzionalità di System.Text.Json
- App a file singolo
- App di trimming
- Intrinseci di Windows Arm64 e Arm64
- Supporto degli strumenti per il debug di dump
- Le librerie di runtime sono annotate per l'80% per i tipi riferimento nullable
- Miglioramenti delle prestazioni:
.NET 5 non sostituisce .NET Framework
.NET 5 e versioni successive sono l'implementazione principale di .NET in futuro, ma .NET Framework 4.x è ancora supportato. Non sono previsti piani per convertire le tecnologie seguenti da .NET Framework a .NET 5, ma esistono alternative in .NET:
Tecnologia | Alternativa consigliata |
---|---|
Moduli Web | ASP.NET Core Blazor o Razor Pages |
Windows Workflow (WF) | Elsa-Workflows |
Windows Communication Foundation
L'implementazione originale di Windows Communication Foundation (WCF) è stata supportata solo in Windows. Tuttavia, è disponibile una porta client da .NET Foundation. È completamente open source, multipiattaforma e supportato da Microsoft. I pacchetti NuGet principali sono elencati di seguito:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
I componenti server che completano le librerie client indicate sopra sono disponibili tramite CoreWCF. A partire da aprile 2022, CoreWCF è ufficialmente supportato da Microsoft. Tuttavia, per un'alternativa a WCF, prendere in considerazione gRPC.
.NET 5 non sostituisce .NET Standard
Il nuovo sviluppo di applicazioni può specificare il net5.0
moniker framework di destinazione (TFM) per tutti i tipi di progetto, incluse le librerie di classi. La condivisione del codice tra carichi di lavoro .NET 5 è semplificata: tutto ciò che serve è il net5.0
TFM.
Per le app e le librerie .NET 5, il TFM net5.0
combina e sostituisce i TFM netcoreapp
e netstandard
. Tuttavia, se si prevede di condividere il codice tra carichi di lavoro .NET Framework, .NET Core e .NET 5, è possibile farlo specificando netstandard2.0
come TFM. Per altre informazioni, vedere .NET Standard.
Aggiornamenti di C#
Gli sviluppatori che scrivono app .NET 5 avranno accesso alla versione e alle funzionalità C# più recenti. .NET 5 è associato a C# 9, che offre molte nuove funzionalità al linguaggio. In primo piano:
Record: tipi di riferimento con semantica di uguaglianza basata su valore e mutazioni non distruttive supportate da una nuova espressione
with
.Criteri relazionali di ricerca: estende le funzionalità di corrispondenza dei criteri agli operatori relazionali per valutazioni e espressioni comparative, inclusi i modelli logici - nuove parole chiave
and
,or
enot
.Istruzioni di primo livello: come mezzo per accelerare l'adozione e l'apprendimento di C#, il metodo
Main
può essere omesso e un'applicazione semplice come l'esempio seguente è valida:System.Console.Write("Hello world!");
Puntatori a funzione: costrutti di linguaggio che espongono i codici operativo del linguaggio intermedio (IL) seguenti:
ldftn
ecalli
.
Per altre informazioni sulle funzionalità di C# 9, vedere Novità di C# 9.
Generatori di origine
Oltre ad alcune delle nuove funzionalità C# evidenziate, i generatori di origine stanno facendo il loro modo nei progetti di sviluppo. I generatori di origine consentono l'esecuzione del codice durante la compilazione per controllare il programma e produrre file aggiuntivi compilati insieme al resto del codice.
Per altre informazioni sui generatori di origine, vedere Introduzione ai generatori di origine C# e esempi di generatori di origine C#.
Aggiornamenti di F#
F# è il linguaggio di programmazione funzionale .NET e con .NET 5 gli sviluppatori hanno accesso a F# 5. Una delle nuove funzionalità è costituita da stringhe interpolate, simili alle stringhe interpolate in C# e anche a JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Oltre all'interpolazione di stringhe di base, è disponibile l'interpolazione tipizzata. Con l'interpolazione tipizzata, un determinato tipo deve corrispondere all'identificatore di formato.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Questo formato è simile alla sprintf
funzione che formatta una stringa in base agli input indipendenti dai tipi.
Per ulteriori informazioni, vedere Novità di F# 5.
Aggiornamenti di Visual Basic
Non sono disponibili nuove funzionalità del linguaggio per Visual Basic in .NET 5. Tuttavia, con .NET 5, il supporto di Visual Basic viene esteso a:
Descrizione | parametro dotnet new |
---|---|
Applicazione console | console |
Libreria di classi | classlib |
Applicazione WPF | wpf |
Libreria di classi WPF | wpflib |
Libreria di controlli personalizzati WPF | wpfcustomcontrollib |
Libreria di controlli utente WPF | wpfusercontrollib |
Applicazione Windows Forms (WinForms) | winforms |
Libreria di classi Windows Form (WinForms) | winformslib |
Progetto unit test | mstest |
Progetto di test NUnit 3 | nunit |
Elemento di test NUnit 3 | nunit-test |
Progetto di test xUnit | xunit |
Per altre informazioni sui modelli di progetto dall'interfaccia della riga di comando di .NET, vedere dotnet new
.
Nuove funzionalità di System.Text.Json
Sono disponibili nuove funzionalità in e per System.Text.Json:
- Mantenere i riferimenti e gestire riferimenti circolari
- Metodi di estensione HttpClient e HttpContent
- Consentire o scrivere numeri tra virgolette
- Supporto di tipi non modificabili e record C# 9
- Supportare le funzioni di accesso alle proprietà non pubbliche
- Campi di supporto
- Ignorare in modo condizionale le proprietà
- Supportare dizionari non stringa-chiave
- Consentire ai convertitori personalizzati di gestire i valori Null
- Copiare JsonSerializerOptions
- Creare JsonSerializerOptions con impostazioni predefinite Web