BinaryFormatter foi desabilitado na maioria dos tipos de projeto

Os métodos BinaryFormatter.Serialize(Stream, Object) e BinaryFormatter.Deserialize(Stream) agora geram um 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 geravam 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 funcionavam corretamente na maioria dos tipos de projeto (excluindo ASP.NET, WASM e MAUI). Por exemplo, as APIs funcionavam corretamente em um aplicativo de console.

Novo comportamento

Começando no .NET 8, os métodos afetados geram um NotSupportedException em tempo de execução em todos os tipos de projeto, exceto pelo Windows Forms e pela WPF. As APIs continuam obsoletas (como erro) em todos os tipos de projeto, incluindo o Windows Forms e a WPF.

Versão introduzida

.NET 8 versão prévia 4

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

Essa alteração em tempo de execução é a próxima fase do plano de obsolescência de BinaryFormatter, no qual BinaryFormatter eventualmente será removido do .NET.

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

Se você precisar continuar usando BinaryFormatter, poderá definir uma opção de compatibilidade no arquivo de projeto para habilitar novamente a funcionalidade BinaryFormatter. 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 sendo respeitada no .NET 8.

APIs afetadas

Confira também