증상
컴퓨터에 Microsoft .NET Framework 4.7이 설치되어 있다고 가정합니다. .NET Framework 실행되는 애플리케이션은 AppContext 스위치에 대한 레지스트리에 지정된 호환성 설정을 준수하지 않는 것을 알 수 있습니다. 이 시나리오에서는 AppContext 플래그에 대한 레지스트리 옵션을 설정하려고 하면 레지스트리 옵션에 지정된 값이 False로 설정된 것처럼 동작합니다.
원인
프로그램이 레지스트리에서 AppContext 스위치의 값을 읽는 경우 데이터를 검색할 수 없습니다. 이 경우 설정이 레지스트리에 지정된 방식에 문제가 있고 False 값이 애플리케이션에 반환되는 것으로 가정합니다.
해결 방법
이 문제를 해결하려면 애플리케이션 구성(app.config) 파일을 사용하여 플래그를 원하는 값으로 설정합니다.
<AppContextSwitchOverrides> 요소를 <app.config파일의 런타임> 섹션에 추가합니다. 스위치에는 단일 특성, 즉 값이 스위치 이름과 값을 모두 포함하는 키 또는 값 쌍을 나타내는 문자열입니다.
여러 스위치를 정의하려면 AppContextSwitchOverrides> 요소의 값 특성에서 < 각 스위치의 키 또는 값 쌍을 세미콜론으로 구분합니다. 이 경우 <AppContextSwitchOverrides> 요소의 형식은 다음과 같습니다.
XML
<AppContextSwitchOverrides value=”switchName1=value1;switchName2=value2” />
<AppContextSwitchOverrides> 요소를 사용하여 구성 설정을 정의하면 애플리케이션이 scope. 즉, 애플리케이션에만 영향을 줍니다.
app.config 파일은 애플리케이션별로 지정되므로 영향을 받는 모든 애플리케이션에 대해 이 작업을 수행해야 합니다.
AppContext에 대한 자세한 내용은 MSDN(Microsoft Developer Network) 웹 사이트에서 다음 항목을 참조하세요.
추가 정보
이 문제는 AppDomain 수명 주기 초기에 AppContext 스위치를 사용할 수 있도록 하는 작업의 일부로 도입되었습니다. 이렇게 하면 AppContext 스위치를 사용해야 하는 코드가 AppDomain 가져오기에서 매우 일찍 실행되더라도 호환성이 손상되는 변경 내용이 안전하게 수행될 수 있습니다.
문제는 레지스트리에서 읽은 값을 저장하기 위해 할당되는 메모리 양에 관한 것입니다. 레지스트리에서 읽은 값을 저장할 할당된 공간이 충분하지 않으면 기본값인 False로 대체됩니다.
상태
Microsoft는 이것이 "적용 대상" 섹션에 나열된 Microsoft 제품의 문제임을 확인했으며 Microsoft는 향후 버전의 제품에서 솔루션을 사용하고 있습니다.