<NetFx40_PInvokeStackResilience> 요소

런타임이 잘못된 플랫폼 호출 선언을 실행 시간에 자동으로 수정할지를 지정합니다. 자동 수정을 수행하는 경우 관리 코드와 비관리 코드 간 전환 속도가 느려집니다.

<configuration>
  <runtime>
    <NetFx40_PInvokeStackResilience>

구문

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

특성 및 요소

다음 섹션에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성 설명
enabled 필수 특성입니다.

런타임이 잘못된 플랫폼 호출 선언을 검색하고 런타임에 32비트 플랫폼에서 스택을 자동으로 수정하는지 여부를 지정합니다.

enabled 특성

Description
0 런타임은 잘못된 플랫폼 호출 선언을 검색 및 수정하지 않는 .NET Framework 4에 도입된 더 빠른 interop 마샬링 아키텍처를 사용합니다. 기본값입니다.
1 런타임은 잘못된 플랫폼 호출 선언을 검색하고 수정하는 더 느린 전환을 사용합니다.

자식 요소

없음

부모 요소

요소 Description
configuration 공용 언어 런타임 및 .NET Framework 애플리케이션에서 사용하는 모든 구성 파일의 루트 요소입니다.
runtime 런타임 초기화 옵션에 대한 정보를 포함합니다.

설명

이 요소를 사용하면 더 빠른 interop 마샬링을 잘못된 플랫폼 호출 선언에 대한 런타임 복원력으로 교환할 수 있습니다.

.NET Framework 4부터 간소화된 interop 마샬링 아키텍처는 관리 코드에서 비관리 코드로 전환을 위한 상당한 성능 향상을 제공합니다. 이전 버전의 .NET Framework에서 마샬링 계층은 32비트 플랫폼에서 잘못된 플랫폼 호출 선언을 검색하고 스택을 자동으로 수정했습니다. 새 마샬링 아키텍처는 이 단계를 제거합니다. 결과적으로 전환은 매우 빠르지만 잘못된 플랫폼 호출 선언으로 인해 프로그램 오류가 발생할 수 있습니다.

개발 중에 잘못된 선언을 쉽게 검색할 수 있도록 Visual Studio 디버깅 환경이 개선되었습니다. pInvokeStackImbalance MDA(관리 디버깅 도우미)는 애플리케이션이 연결된 디버거를 사용하여 실행 중일 때 잘못된 플랫폼 호출 선언에 관해 알릴 수 있습니다.

애플리케이션에서 다시 컴파일할 수 없는 구성 요소를 사용하고 잘못된 플랫폼 호출 선언이 있는 시나리오를 해결하기 위해 NetFx40_PInvokeStackResilience 요소를 사용할 수 있습니다. enabled="1"을 사용하여 애플리케이션 구성 파일에 이 요소를 추가하면 전환은 느려지지만 이전 버전의 .NET Framework 동작이 있는 호환성 모드로 옵트인됩니다. 이전 버전의 .NET Framework에 대해 컴파일된 어셈블리는 자동으로 이 호환성 모드로 옵트인되며 이 요소가 필요하지 않습니다.

구성 파일

이 요소는 애플리케이션 구성 파일에서만 사용할 수 있습니다.

예제

다음 예제에서는 관리 코드와 비관리 코드 간 전환이 느려지지만 애플리케이션에 대한 잘못된 플랫폼 호출 선언에 대한 향상된 복원력으로 옵트인하는 방법을 보여 줍니다.

<configuration>
   <runtime>
      <NetFx40_PInvokeStackResilience enabled="1"/>
   </runtime>
</configuration>

참고 항목