Partager via


<NetFx40_PInvokeStackResilience>, élément

Spécifie si le runtime résout automatiquement les déclarations d'appel de code non managé au moment de l'exécution, au prix de transitions plus lentes entre le code managé et non managé.

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut

Description

enabled

Attribut requis.

Spécifie si le runtime détecte des déclarations d'appel de code non managé incorrectes et résout automatiquement la pile au moment de l'exécution sur les plateformes 32 bits.

Attribut enabled

Valeur

Description

0

Le runtime utilise l'architecture de marshaling d'interopérabilité la plus rapide introduite dans le .NET Framework version 4, qui ne détecte pas et ne résout pas les déclarations d'appel de plateforme. Il s'agit de la valeur par défaut.

1

Le runtime utilise les transitions lentes qui détectent et résolvent les déclarations d'appel de plateforme.

Éléments enfants

Aucun

Éléments parents

Élément

Description

configuration

Élément racine de chaque fichier de configuration utilisé par le Common Language Runtime et les applications .NET Framework.

runtime

Contient des informations sur les options d'initialisation du runtime.

Notes

Cet élément vous permet d'échanger du marshaling d'interopérabilité plus rapide contre une résistance de temps d'exécution pour des déclarations d'appel de plateforme incorrectes.

Lors du démarrage avec le .NET Framework 4, une architecture de marshaling d'interopérabilité simplifiée offre une amélioration significative des performances pour les transitions du code managé au code non managé. Dans les versions antérieures du .NET Framework, la couche de marshaling détectait des déclarations d'appel de code non managé sur les plateformes 32 bits et résolvait automatiquement la pile. La nouvelle architecture de marshaling élimine cette étape. Par conséquent, les transitions sont très rapides, mais une déclaration d'appel de code non managé peut provoquer une défaillance de programme.

Pour faciliter la détection des déclarations incorrectes pendant le développement, le débogage Visual Studio a été amélioré. L'Assistant Débogage managé (MDA) pInvokeStackImbalance vous notifie des déclarations d'appel de plateforme incorrectes lorsque votre application s'exécute avec le débogueur attaché.

Pour les scénarios dans lesquels votre application utilise des composants que vous ne pouvez pas recompiler et les déclarations d'appel de plateforme sont incorrectes, vous pouvez utiliser l'élément NetFx40_PInvokeStackResilience. L'ajout de cet élément à votre fichier de configuration de l'application avec enabled="1" opte pour un mode de compatibilité avec le comportement des versions antérieures du .NET Framework, au prix de transitions plus lentes. Les assemblys compilés avec les versions antérieures du .NET Framework optent automatiquement pour ce mode de compatibilité et n'ont pas besoin de cet élément.

Fichier de configuration

Cet élément peut être utilisé uniquement dans le fichier de configuration de l'application.

Exemple

L'exemple suivant montre comment opter pour une résistance accrue contre les déclarations d'appel de plateforme incorrectes pour une application, mais avec des transitions plus lentes entre le code managé et le code non managé.

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

Voir aussi

Référence

Schéma des paramètres d'exécution

Assistant Débogage managé pInvokeStackImbalance

Autres ressources

Schéma des fichiers de configuration pour le .NET Framework