SerializationFormat.Binary は廃止されました
SerializationFormat.Binary は DataTable と DataSet で非推奨になりました。 バイナリ シリアル化は BinaryFormatter に依存します。これは安全ではありません。 コードで SerializationFormat.Binary を使用する場合、非推奨警告 SYSLIB0038 がコンパイル時に生成されます。
また、次の場合、実行時に InvalidEnumArgumentException がスローされます。
- DataSet.RemotingFormat または DataTable.RemotingFormat を SerializationFormat.Binary に設定します。
- バイナリ データで DataTable または DataSet の逆シリアル化コンストラクターの 1 つを呼び出します。
以前の動作
以前は、DataTable と DataSet は、RemotingFormat プロパティを SerializationFormat.Binary に設定したときにシリアル化と逆シリアル化されることがありました。その設定では BinaryFormatter が使用されました。
新しい動作
.NET 7 以後、RemotingFormat プロパティを SerializationFormat.Binary に設定し、DataTable と DataSet をシリアル化または逆シリアル化しようとした場合、InvalidEnumArgumentException がスローされます。
導入されたバージョン
.NET 7
破壊的変更の種類
この変更は、ソースの互換性とバイナリの互換性に影響する可能性があります。
変更理由
SerializationFormat.Binary は BinaryFormatter 経由で実装されます。これは安全でなく、.NET スタック全体で非推奨になっています。
推奨される操作
コードで SerializationFormat.Binary が使用される場合、SerializationFormat.Xml の使用に切り替えるか、別のシリアル化方法を使用してください。
それ以外の場合、Switch.System.Data.AllowUnsafeSerializationFormatBinary
AppContext スイッチを設定できます。 このスイッチでは、SerializationFormat.Binary の使用の許可を選択できます。コードが以前のように動作します。 ただし、このスイッチは .NET 8 で削除されます。 スイッチ設定の詳細については、「ライブラリ コンシューマーの AppContext」を参照してください。
影響を受ける API
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)
関連項目
.NET