BinaryFormatter disabilitato nella maggior parte dei tipi di progetto
I metodi BinaryFormatter.Serialize(Stream, Object) e BinaryFormatter.Deserialize(Stream) ora generano un'eccezione NotSupportedException in fase di esecuzione in quasi tutti i tipi di progetto, incluse le applicazioni console.
Comportamento precedente
In .NET 7 i metodi BinaryFormatter.Serialize(Stream, Object) e BinaryFormatter.Deserialize(Stream) erano contrassegnati come obsoleti e generavano un errore in fase di compilazione. Tuttavia, se l'applicazione eliminava l'obsolescenza, poteva comunque chiamare i metodi e questi funzionavano correttamente nella maggior parte dei tipi di progetto (esclusi ASP.NET, WASM e MAUI). Ad esempio, le API funzionavano correttamente in un'app console.
Nuovo comportamento
A partire da .NET 8, i metodi interessati generano un'eccezione NotSupportedException in fase di esecuzione in tutti i tipi di progetto, ad eccezione di Windows Forms e WPF. Le API continuano a essere obsolete (come errore) in tutti i tipi di progetto, tra cui Windows Forms e WPF.
Versione di introduzione
.NET 8 Anteprima 4
Tipo di modifica che causa un'interruzione
Questa è una modifica funzionale.
Motivo della modifica
Questa modifica in fase di esecuzione è la fase successiva del piano di obsolescenza BinaryFormatter, in cui BinaryFormatter alla fine verrà rimosso da .NET.
Azione consigliata
La migliore linea di azione consiste nell'eseguire la migrazione da BinaryFormatter
a causa dei problemi di sicurezza e affidabilità. Per altre informazioni, vedi Alternative preferite.
Se devi continuare a usare BinaryFormatter
, puoi impostare un commutatore di compatibilità nel file di progetto per riabilitare le funzionalità BinaryFormatter
. Per altre informazioni, vedi la sezione Azione consigliata della notifica sulle modifiche che causano un'interruzione di .NET 7. Tale commutatore di compatibilità continua a essere rispettato in .NET 8.
API interessate
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)