Compartilhar via


BinaryFormatter desabilitado na maioria dos tipos de projeto

Os métodos BinaryFormatter.Serialize(Stream, Object) e BinaryFormatter.Deserialize(Stream) agora lançam uma NotSupportedException em tempo de execução em quase todos os tipos de projeto, incluindo aplicativos de console.

Comportamento anterior

No .NET 7, os métodos BinaryFormatter.Serialize(Stream, Object) e BinaryFormatter.Deserialize(Stream) foram marcados como obsoletos e geram um erro em tempo de compilação. No entanto, se o aplicativo suprimiu a obsolescência, ele ainda podia chamar os métodos e eles funcionariam 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 versão prévia 4

Tipo de mudança disruptiva

Esta é uma alteração comportamental.

Motivo da alteração

Essa alteração em tempo de execução é o próximo estágio do plano de descontinuidade do BinaryFormatter, no qual BinaryFormatter eventualmente será removido do .NET.

O melhor curso de ação é migrar para fora de BinaryFormatter devido às suas falhas de segurança e confiabilidade. Para obter mais informações, consulte alternativas preferenciais.

Se você precisar continuar usando BinaryFormatter, poderá definir uma opção de compatibilidade no arquivo de projeto para habilitar novamente BinaryFormatter a funcionalidade. Para obter mais informações, consulte a seção Ação recomendada da notificação da alteração interruptiva do .NET 7. Essa opção de compatibilidade continua a ser mantida no .NET 8.

APIs afetadas

Consulte também