Condividi tramite


<> Elemento NetFx40_PInvokeStackResilience

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

<configurazione>
  <runtime>
    <NetFx40_PInvokeStackResilience>

Sintassi

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributi

Attributo Descrizione
enabled Attributo obbligatorio.

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

Attributo enabled

valore Descrizione
0 Il runtime usa l'architettura di marshalling di interoperabilità più veloce introdotta in .NET Framework 4, che non rileva e corregge dichiarazioni di platform invoke non corrette. Si tratta dell'impostazione predefinita.
1 Il runtime usa transizioni più lente che rilevano e correggeno dichiarazioni di platform invoke non corrette.

Elementi figlio

Nessuno.

Elementi padre

Elemento Descrizione
configuration Elemento radice in ciascun file di configurazione usato in Common Language Runtime e nelle applicazioni .NET Framework.
runtime Contiene informazioni sulle opzioni di inizializzazione in fase di esecuzione.

Osservazioni:

Questo elemento consente di scambiare marshalling di interoperabilità più veloce per la resilienza in fase di esecuzione rispetto alle dichiarazioni di platform invoke non corrette.

A partire da .NET Framework 4, un'architettura di marshalling di interoperabilità semplificata offre un miglioramento significativo delle prestazioni per le transizioni dal codice gestito al codice non gestito. Nelle versioni precedenti di .NET Framework, il livello di marshalling ha rilevato dichiarazioni di platform invoke non corrette su piattaforme a 32 bit e ha corretto automaticamente lo stack. La nuova architettura di marshalling elimina questo passaggio. Di conseguenza, le transizioni sono molto veloci, ma una dichiarazione platform invoke non corretta può causare un errore di programma.

Per semplificare il rilevamento di dichiarazioni non corrette durante lo sviluppo, l'esperienza di debug di Visual Studio è stata migliorata. L'assistente al debug gestito pInvokeStackImbalance notifica le dichiarazioni di platform invoke non corrette quando l'applicazione è in esecuzione con il debugger collegato.

Per risolvere gli scenari in cui l'applicazione usa componenti che non è possibile ricompilare e che presentano dichiarazioni di platform invoke non corrette, è possibile usare l'elemento NetFx40_PInvokeStackResilience . L'aggiunta di questo elemento al file di configurazione dell'applicazione con enabled="1" opta per una modalità di compatibilità con il comportamento delle versioni precedenti di .NET Framework, a costo di transizioni più lente. Gli assembly compilati in base alle versioni precedenti di .NET Framework vengono scelti automaticamente in questa modalità di compatibilità e non richiedono questo elemento.

File di configurazione

Questo elemento può essere usato solo nel file di configurazione dell'applicazione.

Esempio

Nell'esempio seguente viene illustrato come acconsentire esplicitamente a una maggiore resilienza rispetto alle dichiarazioni di platform invoke non corrette per un'applicazione, a costo di transizioni più lente tra codice gestito e non gestito.

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

Vedi anche