다음을 통해 공유


WPF에서 System.Xaml로 마이그레이션된 형식

.NET Framework 3.5 및 .NET Framework 3.0에서는 WPF(Windows Presentation Foundation)와 Windows Workflow Foundation 모두 XAML 언어 구현을 포함했습니다. WPF XAML 구현에 대해 확장성을 제공한 공용 형식은 대부분 WindowsBase, PresentationCore 및 PresentationFramework 어셈블리에 있었습니다. 마찬가지로 Windows Workflow Foundation XAML에 대한 확장성을 제공한 공용 형식은 System.Workflow.ComponentModel 어셈블리에 있었습니다. .NET Framework 4에서는 XAML 관련 형식 중 일부가 System.Xaml 어셈블리로 마이그레이션되었습니다. XAML 언어 서비스의 공용 .NET Framework 구현을 통해 원래는 특정 프레임워크의 XAML 구현에서 정의되었지만 지금은 전체 .NET Framework 4 XAML 언어 지원의 일부인 많은 XAML 확장성 시나리오를 사용할 수 있습니다. 이 항목에서는 마이그레이션되는 형식을 나열하고 마이그레이션과 관련된 문제를 설명합니다.

어셈블리 및 네임스페이스

.NET Framework 3.5 및 .NET Framework 3.0에서는 WPF가 XAML을 지원하기 위해 구현한 형식이 일반적으로 System.Windows.Markup 네임스페이스에 있었습니다. 이러한 형식은 대부분 WindowsBase 어셈블리에 있었습니다.

.NET Framework 4에서는 새로운 System.Xaml 네임스페이스와 새로운 System.Xaml 어셈블리가 있습니다. 원래 WPF XAML에 대해 구현된 많은 형식이 이제 XAML 구현에 대한 확장성 지점 또는 서비스로 제공됩니다. 보다 일반적인 시나리오에 사용할 수 있도록 하는 작업의 일부로 원래의 WPF 어셈블리에서 System.Xaml 어셈블리로 형식이 전달됩니다. 이렇게 하면 WPF 및 Windows Workflow Foundation과 같은 다른 프레임워크의 어셈블리를 포함하지 않고 XAML 확장성 시나리오를 사용할 수 있습니다.

마이그레이션된 형식의 경우 대부분의 형식이 System.Windows.Markup 네임스페이스에 계속 유지됩니다. 이는 부분적으로 기존 구현의 CLR 네임스페이스 매핑이 파일별로 분할되지 않도록 하기 위한 것이었습니다. 결과적으로 .NET Framework 4의 System.Windows.Markup 네임스페이스에 System.Xaml 어셈블리의 일반 XAML 언어 지원 형식과 WindowsBase 및 기타 WPF 어셈블리의 WPF XAML 구현과 관련된 형식이 혼합되어 포함됩니다. System.Xaml로 마이그레이션되었지만 이전에 WPF 어셈블리에 있었던 형식은 WPF 어셈블리의 버전 4에서 형식 전달을 지원합니다.

워크플로 XAML 지원 형식

Windows Workflow Foundation은 XAML 지원 형식도 제공했으며, 대부분의 경우 WPF 동등 항목과 동일한 짧은 이름을 가졌습니다. 다음은 Windows Workflow Foundation XAML 지원 형식 목록입니다.

이러한 지원 형식은 .NET Framework 4용 Windows Workflow Foundation 어셈블리에 여전히 존재하며 특정 Windows Workflow Foundation 애플리케이션에 계속 사용할 수 있지만 Windows Workflow Foundation을 사용하지 않는 애플리케이션이나 프레임워크에서 참조해서는 안 됩니다.

MarkupExtension

.NET Framework 3.5 및 .NET Framework 3.0에서 WPF의 MarkupExtension 클래스는 WindowsBase 어셈블리에 있었습니다. Windows Workflow Foundation의 병렬 클래스인 MarkupExtension은 System.Workflow.ComponentModel 어셈블리에 있었습니다. .NET Framework 4에서는 MarkupExtension 클래스가 System.Xaml 어셈블리로 마이그레이션됩니다. .NET Framework 4에서는 MarkupExtension이 특정 프레임워크에서 빌드된 시나리오만이 아니라 .NET Framework XAML 서비스를 사용하는 모든 XAML 확장성 시나리오에 사용됩니다. 가능한 경우 특정 프레임워크 또는 프레임워크의 사용자 코드도 XAML 확장에 대한 MarkupExtension 클래스에서 빌드되어야 합니다.

MarkupExtension 지원 서비스 클래스

WPF용 .NET Framework 3.5 및 .NET Framework 3.0은 MarkupExtension 실행자 및 TypeConverter 구현에서 XAML의 형식/속성 사용을 지원하기 위해 사용할 수 있는 여러 서비스를 제공했습니다. 이러한 서비스는 다음과 같습니다.

참고

태그 확장과 관련된 .NET Framework 3.5의 또 다른 서비스는 IReceiveMarkupExtension 인터페이스입니다. IReceiveMarkupExtension은 마이그레이션되지 않았으며 .NET Framework 4용 [Obsolete]로 표시됩니다. 이전에 IReceiveMarkupExtension 을 사용한 시나리오에서는 대신 XamlSetMarkupExtensionAttribute 특성 콜백을 사용해야 합니다. AcceptedMarkupExtensionExpressionTypeAttribute[Obsolete]로 표시됩니다.

XAML 언어 기능

WPF용 여러 XAML 언어 기능과 구성 요소는 이전에 PresentationFramework 어셈블리에 있었습니다. 이러한 항목은 XAML 태그로 태그 확장 사용을 노출하는 MarkupExtension 서브클래스로 구현되었습니다. .NET Framework 4에서는 WPF 어셈블리를 포함하지 않는 프로젝트가 이러한 XAML 언어 수준 기능을 사용할 수 있도록 System.Xaml 어셈블리에 있습니다. WPF는 .NET Framework 4 애플리케이션에도 동일한 구현을 사용합니다. 이 항목에 나열된 다른 경우와 마찬가지로, 지원 형식은 이전 참조가 손상되지 않도록 계속 System.Windows.Markup 네임스페이스에 있습니다.

다음 표에는 System.Xaml에서 정의되는 XAML 기능 지원 클래스 목록이 포함되어 있습니다.

XAML 언어 기능 사용
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

System.Xaml에 특정 지원 클래스가 없을 수도 있지만 이제 XAML 언어의 언어 기능 처리를 위한 일반적인 논리가 System.Xaml과 구현된 XAML 판독기 및 XAML 작성기에 상주합니다. 예를 들어 x:TypeArguments 는 System.Xaml 구현의 XAML 판독기 및 XAML 작성기에서 처리되는 특성입니다. XAML 노드 스트림에 기록될 수 있고, 기본(CLR 기반) XAML 스키마 컨텍스트 처리가 있으며, XAML 형식 시스템 표현을 포함합니다. XAML 참조 설명서에 대한 자세한 내용은 XAML 서비스를 참조하세요.

ValueSerializer 및 지원 클래스

ValueSerializer 클래스는 특히 직렬화 시 출력에 여러 모드 또는 노드가 필요할 수 있는 XAML 직렬화 사례를 위해 문자열로의 형식 변환을 지원합니다. .NET Framework 3.5 및 .NET Framework 3.0에서 WPF용 ValueSerializer 클래스는 WindowsBase 어셈블리에 있었습니다. .NET Framework 4에서는 ValueSerializer 클래스가 System.Xaml에 있으며, WPF에서 빌드된 시나리오뿐 아니라 모든 XAML 확장성 시나리오에 사용됩니다. IValueSerializerContext (지원 서비스) 및 DateTimeValueSerializer (특정 서브클래스)도 System.Xaml로 마이그레이션됩니다.

WPF XAML은 XAML 동작에 대한 특징을 나타내기 위해 CLR 형식에 적용할 수 있는 여러 특성을 포함했습니다. 다음은 .NET Framework 3.5 및 .NET Framework 3.0의 WPF 어셈블리에 있었던 특성 목록입니다. 이러한 특성은 .NET Framework 4에서 System.Xaml로 마이그레이션됩니다.

기타 클래스

IComponentConnector 인터페이스는 .NET Framework 3.5 및 .NET Framework 3.0에서는 WindowsBase에 있었지만 .NET Framework 4에서는 System.Xaml에 있습니다. IComponentConnector 는 주로 도구 지원 및 XAML 태그 컴파일러에 사용됩니다.

INameScope 인터페이스는 .NET Framework 3.5 및 .NET Framework 3.0에서는 WindowsBase에 있었지만 .NET Framework 4에서는 System.Xaml에 있습니다. INameScope 는 XAML 네임스페이스에 대한 기본 작업을 정의합니다.

다음 클래스는 .NET Framework 4에서 WPF 어셈블리와 System.Xaml 어셈블리 둘 다에 있습니다.

XamlReader

XamlWriter

XamlParseException

WPF 구현은 System.Windows.Markup 네임스페이스 및 PresentationFramework 어셈블리에 있습니다. System.Xaml 구현은 System.Xaml 네임스페이스에 있습니다. WPF 형식을 사용하거나 WPF 형식에서 파생하는 경우 일반적으로 System.Xaml 구현 대신 XamlReaderXamlWriter 의 WPF 구현을 사용해야 합니다. 자세한 내용은 System.Windows.Markup.XamlReaderSystem.Windows.Markup.XamlWriter의 설명을 참조하세요.

WPF 어셈블리 및 System.Xaml에 대한 참조를 둘 다 포함하고 includeSystem.Windows.Markup 네임스페이스에 모두 System.Xaml 문을 사용하는 경우 형식을 명확하게 확인하기 위해 이러한 API에 대한 호출을 정규화해야 할 수도 있습니다.