BinaryFormatter desabilitado na maioria dos tipos de projeto
Os BinaryFormatter.Serialize(Stream, Object) métodos e BinaryFormatter.Deserialize(Stream) agora lançam um NotSupportedException tempo de execução em quase todos os tipos de projeto, incluindo aplicativos de console.
Comportamento anterior
No .NET 7, os métodos e BinaryFormatter.Deserialize(Stream) foram marcados como obsoletos BinaryFormatter.Serialize(Stream, Object) e geraram um erro em tempo de compilação. No entanto, se seu aplicativo suprimiu a obsolescência, ele ainda poderia chamar os métodos e eles funcionaram corretamente na maioria dos tipos de projeto (excluindo ASP.NET, WASM e MAUI). Por exemplo, as APIs funcionaram corretamente em um aplicativo de console.
Novo comportamento
A partir do .NET 8, os métodos afetados lançam um NotSupportedException em tempo de execução em todos os tipos de projeto, exceto Windows Forms e WPF. As APIs continuam obsoletas (como erro) em todos os tipos de projeto, incluindo Windows Forms e WPF.
Versão introduzida
.NET 8 Visualização 4
Tipo de mudança de rutura
Esta mudança é uma mudança comportamental.
Razão para a alteração
Essa alteração em tempo de execução é a próxima etapa do plano de obsolescência BinaryFormatter, no qual BinaryFormatter eventualmente será removido do .NET.
Ação recomendada
O melhor curso de ação é migrar devido às suas falhas de BinaryFormatter
segurança e confiabilidade. Para obter mais informações, consulte Alternativas preferidas.
Se precisar continuar usando BinaryFormatter
o , você pode definir uma opção de compatibilidade no arquivo de projeto para reativar BinaryFormatter
a funcionalidade. Para obter mais informações, consulte a seção Ação recomendada da notificação de alteração de quebra do .NET 7. Essa opção de compatibilidade continua a ser honrada no .NET 8.
APIs afetadas
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)