Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
Ação recomendada
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
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)