Windows Presentation Foundation(WPF) BinaryFormatter에 대한 마이그레이션 가이드
BinaryFormatter 제거
.NET 9부터는 알려진 보안 위험으로 인해 BinaryFormatter이(가) 더 이상 지원되지 않으며 WPF 앱을 포함하는 모든 프로젝트 형식에 대해 API가 PlatformNotSupportedException을(를) 항상 throw합니다. BinaryFormatter 마이그레이션 가이드를 참조하여 BinaryFormatter이(가) 발생시키는 위험 및 제거 이유에 대한 자세한 내용을 확인하세요.
BinaryFormatter의 제거로 인해 WPF 애플리케이션이 영향을 받을 것으로 예상되며. .NET 9 이상 버전으로 마이그레이션을 완료하기 위한 조치를 취해야 합니다.
BinaryFormatter이(가) WPF에게 미치는 영향
.NET 9 이전의 Windows Presentation Foundation(WPF)은 BinaryFormatter을(를) 사용하여 저널의 클립보드, 끌어서 놓기 및 로드/저장 상태 등의 시나리오에 대한 데이터를 직렬화 및 역직렬화하였습니다. .NET 9부터, 이러한 시나리오에 대해 WPF 및 Windows Forms는 BinaryFormatter 구현의 하위 집합을 내부적으로 사용합니다. 범용 직렬화/역직렬화에서는 BinaryFormatter에 대한 위험을 해결할 수 없지만 이러한 매우 구체적인 사용 사례의 위험을 완화하기 위한 조치가 알려진 형식 집합을 사용하여 취해졌습니다. 애플리케이션에서 마이그레이션 단계를 수행하지 않는 한 PlatformNotSupportedException을(를) throw하는 지원되지 않거나 알 수 없는 형식에 대한 대체 BinaryFormatter 항목이 여전히 적용됩니다.
WPF 및 WinForms 앱은 다음과 같은 형식을 이러한 형식의 배열 및 목록과 함께 처리합니다. 마이그레이션 단계 없이 이러한 형식으로 저널의 클립보드, 끌어서 놓기 및 Avalon 바인딩이 계속 작동합니다.
bool
byte
char
decimal
double
int
sbyte
float
- TimeSpan
- DateTime
uint
string
nint
nuint
long
ulong
short
ushort
- PointF
- RectangleF
OLE 시나리오
Windows Forms 및 Windows Presentation Foundation BinaryFormatter OLE 지침을 참조하여 클립보드 및 끌어서 놓기 등의 OLE 시나리오에서 BinaryFormatter 제거가 미치는 영향과 마이그레이션 지침에 대한 자세한 정보를 확인하세요.
다음과 같이 처리할 개체를 읽기/저장하기 위한 대체로 BinaryFormatter을(를) 사용한 함수를 참조할 수 있습니다. OLE 시나리오의 경우 SaveObjectToHandle 및 ReadObjectFromHandle
저널링
WPF에서 탐색 기록을 관리하는 동안 상태를 저장하거나 로드해야 하는 경우
DataStream
클래스의 LoadSubStreams/ SaveSubStreams를 호출하여 로드/저장합니다. 새 구현에서 처리하는 알 수 있는 형식의 일부가 아닌 요소에 사용되는 경우 BinaryFormatter을(를) 사용합니다.
개발자가 JournalEntry를 탐색Navigate
GoForward
할 때 또는 GoBack
노드의 데이터가 로드되거나 스트림에 저장되어 상태를 저장합니다. 직렬화/역직렬화 중에 관련된 형식이 본질적으로 처리되지 않는 경우 BinaryFormatter이(가) 사용됩니다.
참조: DataStream.cs
호환성 해결 방법(권장되지 않음)
BinaryFormatter(으)로부터 마이그레이션할 수 없는 .NET 9 사용자는 지원되지 않는 호환성 패키지를 설치할 수 있습니다. BinaryFormatter마이그레이션 가이드: 호환성 패키지를 참조하여 자세한 내용을 확인하세요.
주의
BinaryFormatter은(는) 위험하며 권장되지 않는데, 이는 DoS(서비스 거부), 정보 공개 또는 원격 코드 실행 등의 공격에 소비하는 앱을 위험에 빠뜨리기 때문입니다. BinaryFormatter 사용 및 관련 형식의 역직렬화 위험을 참조하여 BinaryFormatter이(가) 발생시키는 위험에 대한 자세한 내용을 확인하세요.
문제
만약 BinaryFormatter 와(과) 관련하여 WPF 애플리케이션에서 예기치 않은 동작이 발생하면, dotnet/wpf/issues에 문제를 제출하고 해당 문제가 BinaryFormatter 제거와 관련이 있다는 것을 나타내세요.
.NET