Condividi tramite


Elemento <NetFx40_PInvokeStackResilience>

Specifica se il runtime corregge automaticamente dichiarazioni platform invoke errate in fase di esecuzione, al costo di transizioni più lente tra codice gestito e non gestito.

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Attributi ed elementi

Nelle sezioni seguenti vengono illustrati attributi, elementi figlio e padre.

Attributi

Attributo

Oggetto di descrizione

enabled

Attributo obbligatorio.

Specifica se il runtime rileva dichiarazioni platform invoke errate e automaticamente corregge in fase di esecuzione lo stack sulle piattaforme a 32 bit.

Attributo enabled

Value

Oggetto di descrizione

0

Il runtime utilizza l'architettura del marshalling di interoperabilità più veloce introdotta in .NET Framework versione 4, che non rileva e non corregge dichiarazioni platform invoke errate. Questa è l'impostazione predefinita.

1

Il runtime utilizza transizioni più lente che rilevano e correggono dichiarazioni platform invoke errate.

Elementi figlio

Nessuno.

Elementi padre

Elemento

Oggetto di descrizione

configuration

Elemento radice in ciascun file di configurazione utilizzato in Common Language Runtime e nelle applicazioni .NET Framework.

runtime

Contiene informazioni sulle opzioni di inizializzazione in fase di esecuzione.

Note

Questo elemento consente di negoziare interoperabilità più veloce per effettuare il marshalling per l'elasticità della fase di esecuzione rispetto a dichiarazioni platform invoke errate.

Iniziando con .NET Framework 4, un'architettura del marshalling di interoperabilità semplificata fornisce un miglioramento nelle prestazioni significativo per le transizioni da codice gestito a codice non gestito. In versioni precedenti di .NET Framework, il livello del marshalling ha rilevato dichiarazioni di platform invoke errate sulle piattaforme a 32 bit e ha automaticamente fissato lo stack. La nuova architettura del marshalling elimina questo passaggio. Di conseguenza, le transizioni sono molto veloci, ma una dichiarazione platform invoke errata può provocare un errore del programma.

Per facilitare il rilevamento di dichiarazioni errate durante lo sviluppo, l'esperienza di debug di Visual Studio è stata migliorata. PInvokeStackImbalance gestito dal debug di assistente (MDA) notifica dichiarazioni platform invoke errate quando l'applicazione è in esecuzione con il debugger allegato.

Per indirizzare scenari in cui l'applicazione utilizza componenti che non è possibile ricompilare e che dispongono di dichiarazioni platform invoke errate, è possibile utilizzare l'elemento NetFx40_PInvokeStackResilience. L'aggiunta di questo elemento al file di configurazione dell'applicazione con enabled="1" sceglie in una modalità di compatibilità con il comportamento di versioni precedenti di .NET Framework, al costo di transizioni più lente. Assembly compilati rispetto a versioni precedenti di .NET Framework vengono scelti automaticamente in questa modalità di compatibilità e non hanno bisogno di questo elemento.

File di configurazione

L'elemento può essere utilizzato esclusivamente nel file di configurazione dell'applicazione.

Esempio

Nell'esempio seguente viene mostrato come scegliere a fronte dell'aumentata flessibilità rispetto a dichiarazioni platform invoke errate per un'applicazione, al costo di transizioni più lente tra codice gestito e non gestito.

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

Vedere anche

Riferimenti

Schema delle impostazioni dell'ambiente di esecuzione

MDA pInvokeStackImbalance

Altre risorse

Schema dei file di configurazione per .NET Framework