<> 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 richiamo della piattaforma non corrette e corregge automaticamente lo stack in fase di esecuzione in piattaforme a 32 bit.

Attributo enabled

Valore Descrizione
0 Il runtime usa l'architettura di marshalling dell'interoperabilità più veloce introdotta in .NET Framework 4, che non rileva e corregge dichiarazioni di richiamo della piattaforma non corrette. Questo è il valore predefinito.
1 Il runtime usa transizioni più lente che rilevano e correggeno dichiarazioni di richiamo della piattaforma 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.

Commenti

Questo elemento consente di scambiare un marshalling di interoperabilità più veloce per la resilienza in fase di esecuzione rispetto alle dichiarazioni di richiamo della piattaforma 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 richiamo della piattaforma non corrette in 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 di richiamo della piattaforma non corretta può causare un errore del programma.

Per facilitare il rilevamento di dichiarazioni non corrette durante lo sviluppo, l'esperienza di debug di Visual Studio è stata migliorata. L'assistente al debug gestito pInvokeStackImbalance (MDA) avvisa l'utente di dichiarazioni di richiamo della piattaforma 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 hanno dichiarazioni di richiamo della piattaforma non corrette, è possibile usare l'elemento NetFx40_PInvokeStackResilience . Aggiunta di questo elemento al file di configurazione dell'applicazione con enabled="1" consenso esplicito in una modalità di compatibilità con il comportamento delle versioni precedenti di .NET Framework, a costo di transizioni più lente. Gli assembly compilati rispetto alle versioni precedenti di .NET Framework vengono automaticamente espliciti in questa modalità di compatibilità e non necessitano di questo elemento.

File di configurazione

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

Esempio

Nell'esempio seguente viene illustrato come scegliere di aumentare la resilienza rispetto alle dichiarazioni di richiamo della piattaforma 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