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