런타임 지시문 정책 설정
.NET 네이티브의 런타임 지시문 정책 설정에 따라 런타임의 형식 및 형식 멤버 사용 가능 여부가 결정됩니다. 필요한 메타데이터가 없으면 리플렉션, serialization/deserialization 또는 .NET Framework 형식을 COM 또는 Windows 런타임으로 마샬링하는 기능을 사용하는 작업이 실패할 수 있으며 예외가 throw됩니다. 가장 일반적인 예외는 MissingMetadataException 및 MissingInteropDataException(interop의 경우)입니다.
런타임 정책 설정은 런타임 지시문(.rd.xml) 파일에 의해 제어됩니다. 각 런타임 지시문은 어셈블리(<Assembly> 요소), 형식(<Type> 요소) 또는 메서드(<Method> 요소)와 같은 특정 프로그램 요소에 대한 정책을 정의합니다. 지시문에는 다음 섹션에서 설명하는 리플렉션 정책 형식, serialization 정책 형식 및 interop 정책 형식을 정의하는 하나 이상의 특성이 포함됩니다. 특성의 값에 따라 정책 설정이 정의됩니다.
정책 유형
런타임 지시문 파일은 리플렉션, serialization 및 interop의 세 가지 정책 형식 범주를 인식합니다.
리플렉션 정책 형식은 런타임에 리플렉션에 사용할 수 있는 메타데이터를 결정합니다.
Activate
- 인스턴스를 활성화할 수 있도록 생성자에 대한 런타임 액세스를 제어합니다.Browse
- 프로그램 요소에 대한 정보 쿼리를 제어합니다.Dynamic
- 동적 프로그래밍을 사용할 수 있도록 모든 형식 및 멤버에 대한 런타임 액세스를 제어합니다.
다음 표에는 리플렉션 정책 형식과 해당 형식을 사용할 수 있는 프로그램 요소가 나와 있습니다.
요소 활성화 찾아보기 동적 <애플리케이션> ✔️ ✔️ ✔️ <어셈블리> ✔️ ✔️ ✔️ <AttributeImplies> ✔️ ✔️ ✔️ <이벤트> ✔️ ✔️ <필드> ✔️ ✔️ <GenericParameter> ✔️ ✔️ ✔️ <ImpliesType> ✔️ ✔️ ✔️ <방법> ✔️ ✔️ <MethodInstantiation> ✔️ ✔️ <네임스페이스> ✔️ ✔️ ✔️ <매개 변수> ✔️ ✔️ ✔️ <속성> ✔️ ✔️ <Subtypes> ✔️ ✔️ ✔️ <Type> ✔️ ✔️ ✔️ <TypeInstantiation> ✔️ ✔️ ✔️ <TypeParameter> ✔️ ✔️ ✔️ Serialization 정책 형식에 따라 런타임에 serialization 및 deserialization에 사용할 수 있는 메타데이터가 결정됩니다.
Serialize
- Newtonsoft JSON serializer 등의 타사 라이브러리를 통해 형식 인스턴스를 serialize할 수 있도록 생성자, 필드 및 속성에 대한 런타임 액세스를 제어합니다.DataContractSerializer
- DataContractSerializer 클래스가 형식 인스턴스를 serialize할 수 있도록 생성자, 필드 및 속성에 대한 런타임 액세스를 제어합니다.DataContractJsonSerializer
- DataContractJsonSerializer 클래스가 형식 인스턴스를 serialize할 수 있도록 생성자, 필드 및 속성에 대한 런타임 액세스를 제어합니다.XmlSerializer
- XmlSerializer 클래스가 형식 인스턴스를 serialize할 수 있도록 생성자, 필드 및 속성에 대한 런타임 액세스를 제어합니다.
다음 표에는 serialization 정책 형식과 해당 형식을 사용할 수 있는 프로그램 요소가 나와 있습니다.
요소 Serialize DataContractSerializer DataContractJsonSerializer XmlSerializer <애플리케이션> ✔️ ✔️ ✔️ ✔️ <어셈블리> ✔️ ✔️ ✔️ ✔️ <AttributeImplies> ✔️ ✔️ ✔️ ✔️ <이벤트> <필드> ✔️ <GenericParameter> ✔️ ✔️ ✔️ ✔️ <ImpliesType> ✔️ ✔️ ✔️ ✔️ <방법> <MethodInstantiation> <네임스페이스> ✔️ ✔️ ✔️ ✔️ <매개 변수> ✔️ ✔️ ✔️ ✔️ <속성> ✔️ <Subtypes> ✔️ ✔️ ✔️ ✔️ <Type> ✔️ ✔️ ✔️ ✔️ <TypeInstantiation> ✔️ ✔️ ✔️ ✔️ <TypeParameter> ✔️ ✔️ ✔️ ✔️ interop 정책 형식에 따라 런타임에 참조 형식, 값 형식 및 함수 포인터를 COM 및 Windows 런타임으로 전달하는 데 사용할 수 있는 메타데이터가 결정됩니다.
MarshalObject
- 참조 형식에 대해 COM 및 Windows 런타임으로의 네이티브 마샬링을 제어합니다.MarshalDelegate
- 대리자 형식을 함수 포인터로 마샬링하는 네이티브 마샬링을 제어합니다.MarshalStructure
- 값 형식에 대해 COM 및 Windows 런타임으로의 네이티브 마샬링을 제어합니다.
다음 표에는 interop 정책 형식과 해당 형식을 사용할 수 있는 프로그램 요소가 나와 있습니다.
요소 MarshalObject MarshalDelegate MarshalStructure <애플리케이션> ✔️ ✔️ ✔️ <어셈블리> ✔️ ✔️ ✔️ <AttributeImplies> ✔️ ✔️ ✔️ <이벤트> <필드> <GenericParameter> ✔️ ✔️ ✔️ <ImpliesType> ✔️ ✔️ ✔️ <방법> <MethodInstantiation> <네임스페이스> ✔️ ✔️ ✔️ <매개 변수> ✔️ ✔️ ✔️ <속성> <Subtypes> ✔️ ✔️ ✔️ <Type> ✔️ ✔️ ✔️ <TypeInstantiation> ✔️ ✔️ ✔️ <TypeParameter> ✔️ ✔️ ✔️
정책 설정
각 정책 형식은 다음 표에 나와 있는 값 중 하나로 설정할 수 있습니다. 형식 멤버를 나타내는 요소는 기타 요소와는 다른 정책 설정 집합을 지원합니다.
정책 설정 | 설명 | Assembly , Namespace , Type 및 TypeInstantiation 요소 |
Event , Field , Method , MethodInstantiation 및 Property 요소 |
---|---|---|---|
All |
.NET 네이티브 도구 체인에서 제거하지 않는 모든 형식과 멤버에 대해 정책을 사용하도록 설정합니다. | ✔️ | |
Auto |
해당 프로그램 요소에 대한 정책 형식으로 기본 정책을 사용해야 함을 지정합니다. 이 설정은 해당 정책 형식에 대해 정책을 생략하는 것과 같습니다. Auto 는 보통 부모 요소에서 정책이 상속됨을 나타내는 데 사용됩니다. |
✔️ | ✔️ |
Excluded |
특정 프로그램 요소에 대해 정책을 사용하지 않음을 나타냅니다. 예를 들어<Type Name="BusinessClasses.Person" Browse="Excluded" Dynamic="Excluded" /> 런타임 지시문은 BusinessClasses.Person 클래스의 메타데이터를 검색하거나 Person 개체를 동적으로 인스턴스화 및 수정하는 데 사용할 수 없음을 지정합니다. |
✔️ | ✔️ |
Included |
부모 형식의 메타데이터를 사용할 수 있는 경우 정책을 사용하도록 설정합니다. | ✔️ | |
Public |
도구 체인이 형식 또는 멤버를 불필요한 것으로 결정하여 제거하는 경우가 아니면 public 형식 또는 멤버에 대해 정책을 사용하도록 설정합니다. 이 설정은 도구 체인에서 불필요한 것으로 결정하는 public 형식 및 멤버도 항상 사용할 수 있도록 하는 Required Public 과는 다릅니다. |
✔️ | |
PublicAndInternal |
도구 체인이 형식 또는 멤버를 불필요한 것으로 결정하여 제거하는 경우가 아니면 public 및 내부 형식이나 멤버에 대해 정책을 사용하도록 설정합니다. 이 설정은 도구 체인에서 불필요한 것으로 결정하는 public 및 내부 형식과 멤버도 항상 사용할 수 있도록 하는 Required PublicAndInternal 과는 다릅니다. |
✔️ | |
Required |
멤버가 사용된 것으로 표시되어도 멤버에 대한 정책이 사용되며 메타데이터가 제공됨을 나타냅니다. | ✔️ | |
Required Public |
public 형식 또는 멤버에 대해 정책을 사용하도록 설정하며 public 형식 또는 멤버의 메타데이터를 항상 사용할 수 있습니다. 이 설정은 도구 체인이 필요하다고 결정하는 public 형식과 멤버의 메타데이터만 제공하는 Public 과는 다릅니다. |
✔️ | |
Required PublicAndInternal |
public 및 내부 형식 또는 멤버에 대해 정책을 사용하도록 설정하며 public 및 내부 형식 또는 멤버의 메타데이터를 항상 사용할 수 있습니다. 이 설정은 도구 체인이 필요하다고 결정하는 public 및 내부 형식과 멤버의 메타데이터만 제공하는 PublicAndInternal 과는 다릅니다. |
✔️ | |
Required All |
도구 체인이 사용 여부에 관계없이 모든 형식과 멤버를 유지해야 하도록 지정하고 해당 형식과 멤버에 대해 정책을 사용하도록 설정합니다. | ✔️ |
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기