Partilhar via


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.

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 BinaryFormattero , 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

Consulte também