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:

.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:

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 e not.

  • 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 e calli.

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:

Vedi anche