O SerializationFormat.Binary está obsoleto
SerializationFormat.Binary está obsoleto para DataTable e DataSet. A serialização binária depende de BinaryFormatter, que não é seguro. Se você usar SerializationFormat.Binary no código, o aviso de obsolescência SYSLIB0038 será gerado em tempo de compilação.
Além disso, uma InvalidEnumArgumentException será gerada em tempo de execução se você:
- Definir DataSet.RemotingFormat ou DataTable.RemotingFormat como SerializationFormat.Binary.
- Chamar um dos construtores de desserialização para DataTable ou DataSet usando dados binários.
Comportamento anterior
Anteriormente, DataTable e DataSet podiam ser serializados e desserializados com a respectiva propriedade RemotingFormat definida como SerializationFormat.Binary, que usava BinaryFormatter nos bastidores.
Novo comportamento
Do .NET 7 em diante, se você tentar serializar ou desserializar DataTable e DataSet com a respectiva propriedade RemotingFormat definida como SerializationFormat.Binary, uma InvalidEnumArgumentException será gerada.
Versão introduzida
.NET 7
Tipo de alteração interruptiva
Essa alteração pode afetar a compatibilidade com binários e a compatibilidade com a origem.
Motivo da alteração
SerializationFormat.Binary é implementado por meio de BinaryFormatter, que não é seguro e está ficando obsoleto em toda a pilha do .NET.
Ação recomendada
Se o código usar SerializationFormat.Binary, mude para SerializationFormat.Xml ou use outro método de serialização.
Caso contrário, você pode definir a opção Switch.System.Data.AllowUnsafeSerializationFormatBinary
AppContext. Com essa opção, você pode permitir o uso de SerializationFormat.Binary para que o código consiga funcionar como antes. No entanto, essa opção será removida no .NET 8. Para obter informações de como definir a opção, confira AppContext para consumidores da biblioteca.
APIs afetadas
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)