Compartir a través de


Elemento <NetFx40_PInvokeStackResilience>

Especifica si el runtime corrige automáticamente las declaraciones de invocación de plataforma incorrectas en tiempo de ejecución, a costa de transiciones más lentas entre código administrado y código no administrado.

<configuration>
  <runtime>
    <NetFx40_PInvokeStackResilience>

Sintaxis

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Atributos y elementos

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo Descripción
enabled Atributo necesario.

Especifica si el tiempo de ejecución detecta declaraciones de invocación de plataforma incorrectas y corrige automáticamente la pila en tiempo de ejecución en plataformas de 32 bits.

Atributo enabled

Valor Descripción
0 El tiempo de ejecución usa la arquitectura de serialización de interoperabilidad más rápida introducida en .NET Framework 4, que no detecta ni corrige declaraciones de invocación de plataforma incorrectas. Este es el valor predeterminado.
1 El tiempo de ejecución usa transiciones más lentas que detectan y corrigen declaraciones de invocación de plataforma incorrectas.

Elementos secundarios

Ninguno.

Elementos primarios

Elemento Descripción
configuration Elemento raíz de cada archivo de configuración usado por las aplicaciones de Common Language Runtime y .NET Framework.
runtime Contiene información sobre las opciones de inicialización del motor en tiempo de ejecución.

Comentarios

Este elemento le permite renunciar a una serialización de interoperabilidad más rápida a cambio de una mayor resistencia en tiempo de ejecución para hacer frente a declaraciones de invocación de plataforma incorrectas.

A partir de .NET Framework 4, una arquitectura de serialización de interoperabilidad simplificada proporciona una mejora significativa de rendimiento para las transiciones del código administrado al código no administrado. En versiones anteriores de .NET Framework, la capa de serialización detectaba declaraciones de invocación de plataforma incorrectas en plataformas de 32 bits y corregía automáticamente la pila. La nueva arquitectura de serialización elimina este paso. Como resultado, las transiciones son muy rápidas; sin embargo, una declaración de invocación de plataforma incorrecta puede provocar un error del programa.

Para facilitar la detección de declaraciones incorrectas durante el desarrollo, se ha mejorado la experiencia de depuración de Visual Studio. El asistente para depuración administrada (MDA) pInvokeStackImbalance notifica las declaraciones de invocación de plataforma incorrectas cuando la aplicación se ejecuta con el depurador asociado.

Para abordar escenarios en los que la aplicación usa componentes que no se pueden volver a compilar y que tienen declaraciones de invocación de plataforma incorrectas, puede usar el elemento NetFx40_PInvokeStackResilience. Agregar este elemento al archivo de configuración de la aplicación con enabled="1" opta por un modo de compatibilidad con el comportamiento de versiones anteriores de .NET Framework a cambio de transiciones más lentas. Los ensamblados que se han compilado con versiones anteriores de .NET Framework participan automáticamente en este modo de compatibilidad y no necesitan este elemento.

Archivo de configuración

Este elemento solo se puede utilizar en el archivo de configuración de la aplicación.

Ejemplo

En el ejemplo siguiente se muestra cómo optar por aumentar la resistencia frente a declaraciones de invocación de plataforma incorrectas para una aplicación, a costa de transiciones más lentas entre código administrado y no administrado.

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

Consulte también