Versioni precedenti del framework eliminate dal pacchetto
A partire da .NET 6, i pacchetti di librerie principali non possono più essere installati nei progetti il cui framework di destinazione è precedente a:
- .NET Framework 4.6.1
- .NET Core 3.1
- .NET Standard 2.0
Descrizione delle modifiche
In precedenza, è stato possibile aggiornare i pacchetti alla versione più recente, anche se sono stati usati da un framework precedente a .NET Framework 4.6.1, .NET Core 3.1 o .NET Standard 2.0. A partire da .NET 6, se si fa riferimento a un pacchetto interessato da un framework precedente, non è più possibile aggiornare il pacchetto a cui si fa riferimento alla versione più recente.
Versione introdotta
.NET 6
Motivo della modifica
Continuare a compilare per tutti i framework aumenta la complessità e le dimensioni di un pacchetto. In passato, .NET ha risolto questo problema creando solo per i framework correnti e la raccolta di file binari per framework meno recenti. La raccolta significa che durante la compilazione viene scaricata la versione precedente del pacchetto e i file binari vengono estratti.
Mentre si utilizza un file binario raccolto significa che è sempre possibile aggiornare senza preoccuparsi che un framework venga eliminato, significa anche che non si ottengono correzioni di bug o nuove funzionalità. In altre parole, gli asset raccolti non possono essere gestiti. Questo è nascosto perché è possibile continuare ad aggiornare il pacchetto a una versione successiva anche se si sta usando lo stesso file binario precedente non più aggiornato.
A partire da .NET 6, .NET non esegue più alcuna forma di raccolta per garantire che tutti gli asset spediti possano essere gestiti.
Azione consigliata
Se il progetto viene mantenuto ma non in continua evoluzione, è sufficiente non aggiornare i pacchetti interessati. Questo non è in genere un enorme takeback perché si sta già consumando un file binario bloccato.
Se il progetto è in continua evoluzione, aggiornarlo a una versione del framework successiva, ad esempio:
- .NET Framework 4.6.1
- .NET Core 3.1
- .NET Standard 2.0
API interessate
I pacchetti seguenti non includono più framework obsoleti:
- Microsoft.Extensions.DependencyModel
- Microsoft.Win32.Registry.AccessControl
- Microsoft.Win32.SystemEvents
- System.Collections.Immutable
- System.ComponentModel.Annotations
- System.ComponentModel.Composition
- System.ComponentModel.Composition.Registration
- System.Composition.AttributedModel
- System.Composition.Convention
- System.Composition.Hosting
- System.Composition.Runtime
- System.Composition.TypedParts
- System.Data.Odbc
- System.Data.OleDb
- System.Diagnostics.DiagnosticSource
- System.Diagnostics.EventLog
- System.Diagnostics.PerformanceCounter
- System.DirectoryServices
- System.DirectoryServices.AccountManagement
- System.DirectoryServices.Protocols
- System.Drawing.Common
- System.IO.Packaging
- System.IO.Pipelines
- System.Management
- System.Net.Http.WinHttpHandler
- System.Net.WebSockets.WebSocketProtocol
- System.Numerics.Tensors
- System.Reflection.Context
- System.Reflection.Metadata
- System.Reflection.MetadataLoadContext
- System.Runtime.Caching
- System.Runtime.CompilerServices.Unsafe
- System.Security.Cryptography.Cng
- System.Security.Cryptography.OpenSsl
- System.Security.Cryptography.Pkcs
- System.Security.Cryptography.ProtectedData
- System.Security.Permissions
- System.ServiceProcess.ServiceController
- System.Speech
- System.Text.Encoding.CodePages
- System.Text.Encodings.Web
- System.Threading.AccessControl
- System.Threading.Channels
- System.Threading.Tasks.Dataflow
- System.Windows.Extensions
I pacchetti seguenti non verranno più aggiornati perché l'implementazione fa ora parte della piattaforma .NET 6:
- Microsoft.Win32.Registry
- System.ComponentModel.Annotations
- System.IO.FileSystem.AccessControl
- System.IO.Pipes.AccessControl
- System.Security.AccessControl
- System.Security.Cryptography.Cng
- System.Security.Cryptography.OpenSsl
- System.Security.Principal.Windows