Novità di .NET 9
Informazioni sulle nuove funzionalità di .NET 9 e collegamenti ad altre informazioni sulla documentazione.
.NET 9, il successore di .NET 8, ha un particolare focus sulle app native del cloud e sulle prestazioni. Sarà supportato per 18 mesi come versione di supporto standard.It will be supported for 18 months as a standard-term support (STS). È possibile scaricare qui .NET 9 .
Novità di .NET 9, il team di progettazione pubblica gli aggiornamenti di anteprima di .NET 9 in Discussioni su GitHub. Questo è un ottimo posto per porre domande e fornire commenti e suggerimenti sulla versione.
Runtime .NET
Il runtime di .NET 9 include un nuovo modello di attributi per gli interruttori di funzionalità con supporto per la riduzione. I nuovi attributi consentono di definire opzioni di funzionalità che le librerie possono usare per attivare o disattivare le aree di funzionalità.
Garbage Collection include un adattamento dinamico alle dimensioni dell'applicazione funzionalità usata per impostazione predefinita anziché server GC.
Il runtime include anche numerosi miglioramenti delle prestazioni, tra cui ottimizzazioni dei cicli, inlining e vettorizzazione arm64 e generazione di codice.
Per altre informazioni, vedere Novità del runtime di .NET 9.
Librerie .NET
System.Text.Json aggiunge il supporto per le annotazioni dei tipi di riferimento nullable e l'esportazione di schemi JSON da tipi. Aggiunge nuove opzioni che consentono di personalizzare l'indentazione del JSON scritto e leggere più valori JSON a livello di radice da un singolo flusso.
In LINQ i nuovi metodi CountBy e AggregateBy consentono di aggregare lo stato per chiave senza dover allocare raggruppamenti intermedi tramite GroupBy.
Per i tipi di raccolta, il tipo di System.Collections.Generic.PriorityQueue<TElement,TPriority> include un nuovo metodo di Remove(TElement, TElement, TPriority, IEqualityComparer<TElement>) che è possibile usare per aggiornare la priorità di un elemento nella coda.
Per la crittografia, .NET 9 aggiunge un nuovo metodo hash one-shot nel tipo CryptographicOperations. Aggiunge anche nuove classi che usano l'algoritmo KMAC.
Per riflessione, il nuovo tipo di PersistedAssemblyBuilder consente di salvare un assembly generato. Questa nuova classe include anche il supporto PDB, ovvero è possibile generare informazioni sui simboli e usarla per eseguire il debug di un assembly generato.
La classe TimeSpan include nuovi metodi di From*
che consentono di creare un oggetto TimeSpan
da un int
anziché da un double
. Questi metodi consentono di evitare errori causati da imprecisioni intrinseche nei calcoli a virgola mobile.
Per altre informazioni, vedere Novità delle librerie .NET 9.
.NET SDK
.NET 9 SDK introduce set di carico di lavoro, in cui tutti i carichi di lavoro rimangono in una singola versione specifica fino a quando non vengono aggiornati in modo esplicito. Per gli strumenti, una nuova opzione per dotnet tool install
consente agli utenti (anziché agli autori di strumenti) di decidere se uno strumento può essere eseguito in una versione di runtime .NET più recente rispetto alla versione di destinazione dello strumento. Inoltre:
- Gli unit test offrono una migliore integrazione di MSBuild che consente di eseguire test in parallelo.
- Per impostazione predefinita, i controlli di sicurezza NuGet vengono eseguiti sia sui riferimenti diretti che sui pacchetti transitivi.
- Il logger del terminale è abilitato per impostazione predefinita e ha anche migliorato l'usabilità. Ad esempio, il numero totale di errori e avvisi viene ora riepilogato alla fine di una compilazione.
- Sono disponibili nuovi analizzatori di script MSBuild ("controlli di compilazione").
- L'SDK può rilevare e regolare le versioni non corrispondenti tra .NET SDK e MSBuild.
- Il comando
dotnet workload history
mostra la cronologia delle installazioni e delle modifiche del carico di lavoro per l'installazione corrente di .NET SDK.
Per altre informazioni, vedere Novità nell'SDK per .NET 9.
Blocchi predefiniti di intelligenza artificiale
.NET 9 introduce un livello unificato di astrazioni C# tramite i pacchetti Microsoft.Extensions.AI e Microsoft.Extensions.VectorData. Queste astrazioni facilitano l'interazione con i servizi di intelligenza artificiale, inclusi piccoli e grandi modelli di linguaggio, incorporazioni, archivi vettoriali e middleware.
.NET 9 include anche nuovi tipi tensor che espandono le funzionalità di intelligenza artificiale. TensorPrimitives e il nuovo tipo di Tensor<T> espandono le funzionalità di intelligenza artificiale abilitando una codifica, una manipolazione e un calcolo efficienti dei dati multidimensionali. Questi tipi sono disponibili nella versione più recente del pacchetto System.Numerics.Tensors .
TensorPrimitives
- Ambito del metodo espanso: aumentato da 40 a quasi 200 sovraccarichi, ora incluse operazioni numeriche simili a
Math
,MathF
eINumber<T>
, ma per intervalli di valori. - Miglioramenti delle prestazioni: molte operazioni sono ora ottimizzate per SIMD per prestazioni migliori.
- Overload generici: supporta qualsiasi tipo
T
che implementa una determinata interfaccia, espandendosi oltre solo gli intervalli di valori float in .NET.
Tensor<T>
- Si basa su
TensorPrimitives
per operazioni matematiche efficienti. - Fornisce un'interoperabilità efficiente con le librerie di intelligenza artificiale (ML.NET, TorchSharp, ONNX Runtime) usando zero copie, se possibile.
- Consente una manipolazione dei dati semplice ed efficiente con operazioni di indicizzazione e sezionamento.
- È sperimentale in .NET 9.
ML.NET
ML.NET è un framework open source multipiattaforma che consente l'integrazione di modelli di Machine Learning personalizzati in applicazioni .NET.
ML.NET 4.0 apporta i miglioramenti seguenti:
- Nuovi modi per configurare programmaticamente le opzioni
MLContext
. - Carica i modelli ONNX come
Stream
. - Miglioramenti del dataframe.
- Nuove funzionalità per i tokenizer .
- (Experimental) Porting in TorchSharp dei modelli Llama e della famiglia Phi.
- (Sperimentale) API della pipeline CausalLM.
Per altre informazioni, vedere Novità di ML.NET.
Tokenizer
La libreria di Microsoft.ML.Tokenizers offre agli sviluppatori .NET funzionalità di codifica e decodifica del testo nei token. Per gli scenari di intelligenza artificiale, questo è importante per gestire il contesto, calcolare i costi e il testo di pre-elaborazione quando si lavora con i modelli locali.
La versione più recente introduce nuove funzionalità significative per i tokenizer:
- Tiktoken per i modelli GPT (3, 3,5, 4, 4o, o1) e Llam3
- Llama (basato su SentencePiece) per i modelli Llama e Mistral
- CodeGen per modelli di generazione del codice come codegen-350M-mono
- Phi2 (basato su CodeGen) per il modello Microsoft Phi2
- WordPiece
- Bert (basato su WordPiece) per modelli supportati da Bert come optimum--all-MiniLM-L6-v2
.NET Aspire
.NET Aspire è un set di potenti strumenti, modelli e pacchetti per la creazione di app osservabili e pronte per la produzione. La versione più recente di .NET Aspire include miglioramenti al dashboard e alla gestione del ciclo di vita delle risorse. Aggiunge anche nuove integrazioni e API per una maggiore flessibilità durante lo sviluppo. .NET Aspire 9 funziona con le app .NET 9 e .NET 8. Per altre informazioni, vedere Novità di .NET Aspire 9.
ASP.NET Core
ASP.NET app Core compilate con .NET 9 sono sicure per impostazione predefinita, hanno esteso il supporto per la compilazione in anticipo e hanno migliorato il monitoraggio e la traccia. Con i miglioramenti delle prestazioni, si noterà una velocità effettiva più elevata e tempi di avvio più veloci e tutto con meno utilizzo della memoria. ASP.NET Core in .NET 9 comprende:
- Gestione ottimizzata dei file statici, ad esempio JavaScript e CSS, in fase di compilazione e pubblicazione con controllo delle versioni con impronta digitale automatica.
- Blazor: nuovi modelli di app ibride e Web, rilevamento della modalità di rendering dei componenti, nuova esperienza di riconnessione con il rendering del server.
- API: supporto integrato per la generazione di documenti OpenAPI con
Microsoft.AspNetCore.OpenAPI
, supporto AOT nativo avanzato. - Maggiore sicurezza con nuove API per l'autenticazione e l'autorizzazione.
- Configurazione più semplice per il certificato di sviluppo attendibile in Linux per abilitare HTTPS durante lo sviluppo.
Queste sono solo alcune delle funzionalità e miglioramenti di .NET 9. Per altre informazioni, vedere Novità di ASP.NET Core 9.0.
.NET MAUI
L'obiettivo dell'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI) in .NET 9 è un miglioramento delle prestazioni e dell'affidabilità e delle integrazioni più approfondite per applicazioni desktop e per dispositivi mobili. .NET MAUI include una nuova implementazione più performante di CollectionView e CarouselView per iOS e Mac Catalyst, aggiornamenti ai controlli esistenti, nuovi eventi del ciclo di vita delle app e miglioramenti a AOT nativi e al trimming per migliorare le dimensioni e il tempo di avvio delle app. Inoltre:
- Per Windows è disponibile un nuovo controllo desktop TitleBar.
- Un nuovo controllo HybridWebView consente di includere più facilmente contenuto abilitato per JavaScript da framework come ReactJS, Vue.jse Angular.
- Entry ora supporta altre modalità di tastiera.
- I gestori di controllo si disconnettono automaticamente dai controlli, quando possibile.
- MainPage è deprecato a favore dell'impostazione della pagina principale dell'app tramite il override della classe Application.CreateWindow(IActivationState).
Per altre informazioni su queste nuove funzionalità e altro ancora, vedere Novità di .NET MAUI per .NET 9.
EF Core
Entity Framework Core include aggiornamenti significativi per il provider di database per Azure Cosmos DB per NoSQL. Include anche alcuni passaggi per la compilazione AOT e le query precompilate, tra altri miglioramenti. Per altre informazioni, vedere Novità di EF Core 9.
C# 13
C# 13 viene fornito con .NET 9 SDK e include le nuove funzionalità seguenti:
- raccolte
params
- Nuovo tipo e semantica di
lock
- Nuova sequenza di escape -
\e
- Miglioramenti del tipo naturale del gruppo di metodi
- Accesso implicito dell'indicizzatore negli inizializzatori di oggetti
- Abilitare
ref
variabili locali e contesti diunsafe
in iteratori e metodi asincroni - Abilitare i tipi di
ref struct
per implementare le interfacce - Consenti tipi di struct ref come argomenti per i parametri di tipo nei generici.
- Le proprietà parziali e gli indicizzatori sono ora consentiti nei tipi
partial
. - La priorità di risoluzione dell'overload consente agli autori di librerie di designare un overload migliore rispetto ad altri.
C# 13 aggiunge inoltre una funzionalità di anteprima: field
proprietà supportate.
Per altre informazioni, vedere Novità su C# 13.
F# 9
F# 9 viene fornito con .NET 9 SDK e include le nuove funzionalità seguenti:
- Tipi di riferimento nullable
- Unione discriminata. Proprietà Is*
- I modelli attivi parziali possono restituire valori bool invece dell'opzione di unità
- Preferire i metodi di estensione alle proprietà intrinseche quando vengono forniti argomenti
- Espressioni di calcolo con corpo vuoto
- Le direttive hash possono accettare argomenti diversi da stringhe
- Direttiva #help estesa in fsi per visualizzare la documentazione nel ciclo REPL (read-eval-print)
- Consenti #nowarn di supportare il prefisso FS nei codici di errore per disabilitare gli avvisi
- Avviso sull'attributo TailCall in funzioni non ricorsive o valori vincolati a let
- Applicare i target degli attributi
- Funzioni casuali per le raccolte
- Supporto delle espressioni di raccolta C# per elenchi e set F#
- Vari miglioramenti alla produttività, alle prestazioni e agli strumenti per sviluppatori
Per altre informazioni, vedere Novità di F# 9.
Windows Presentation Foundation
WPF in .NET 9 offre supporto avanzato per la creazione di app moderne con diversi miglioramenti di tema e altro ancora:
- Supporto per il tema Fluent di Windows.
- È stato aggiunto il supporto del tema per le modalità chiaro e scuro di Windows.
- I temi supportano ora il colore principale di Windows.
- Il rendering del carattere è stato migliorato per supportare legature basate su trattini.
-
BinaryFormatter
non è più supportato.
Per altre informazioni, vedere Novità di WPF per .NET 9.
Windows Forms
WinForms in .NET 9 offre il supporto per nuovi temi, miglioramenti per lo sviluppo asincrono e altro ancora:
-
Form
eTaskDialog
ora supportanoShowDialogAsync
. (Funzionalità sperimentale) -
BinaryFormatter
non è più supportato. - Supporto sperimentale per il rendering dell'app in modalità scura, come supportato da Windows.
-
FolderBrowserDialog
eToolStrip
hanno apportato alcuni miglioramenti secondari. - La libreria System.Drawing ha apportato numerosi miglioramenti, tra cui il wrapping degli effetti GDI+, il supporto per
ReadOnlySpan
e una migliore generazione di codice di interoperabilità.
Per altre informazioni, vedere Novità di Windows Forms per .NET 9.