Condividi tramite


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.

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

Vedi anche