Partilhar via


BinaryFormatter desabilitado na maioria dos tipos de projeto

Os métodos BinaryFormatter.Serialize(Stream, Object) e BinaryFormatter.Deserialize(Stream) agora lançam um NotSupportedException durante o tempo de execução em quase todos os tipos de projetos, incluindo aplicações de linha de comandos.

Comportamento anterior

No .NET 7, os métodos BinaryFormatter.Serialize(Stream, Object) e BinaryFormatter.Deserialize(Stream) foram marcados como obsoletos 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 disruptiva

Esta alteração é de natureza comportamental .

Motivo da mudança

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

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

Se precisas continuar a usar BinaryFormatter, podes definir uma opção de compatibilidade no ficheiro de projeto para reativar a funcionalidade de BinaryFormatter. Para obter mais informações, consulte a seção Ação recomendada da notificação de alteração de compatibilidade do .NET 7. Essa opção de compatibilidade continua a ser honrada no .NET 8.

APIs afetadas

Ver também