SerializationFormat.Binary는 사용되지 않습니다
SerializationFormat.Binary는 DataTable 및 DataSet에 대해 더 이상 사용되지 않습니다. 이진 파일 직렬화는 안전하지 않은 BinaryFormatter에 의존합니다. 코드에서 SerializationFormat.Binary를 사용하면 컴파일 시 폐기 경고 SYSLIB0038이 생성됩니다.
또한 다음과 같은 경우 런타임 시 InvalidEnumArgumentException이 throw됩니다.
- DataSet.RemotingFormat 또는 DataTable.RemotingFormat을 SerializationFormat.Binary로 설정합니다.
- 이진 데이터를 사용하여 DataTable 또는 DataSet에 대한 역직렬화 생성자 중 하나를 호출합니다.
이전 동작
이전에는 RemotingFormat 속성 집합을 SerializationFormat.Binary로 설정하여 DataTable 및 DataSet를 직렬화 및 역직렬화할 수 있었으며 내부적으로는 BinaryFormatter를 사용했습니다.
새 동작
.NET 7부터 RemotingFormat 속성 집합을 SerializationFormat.Binary로 설정하여 DataTable 및 DataSet를 직렬화 또는 역직렬화하려고 하면 InvalidEnumArgumentException이 throw됩니다.
도입된 버전
.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