Partilhar via


<> Elemento NetFx40_PInvokeStackResilience

Especifica se o tempo de execução corrige automaticamente declarações de invocação de plataforma incorretas em tempo de execução, ao custo de transições mais lentas entre código gerenciado e não gerenciado.

<configuração>
  <tempo de execução>
    <NetFx40_PInvokeStackResilience>

Sintaxe

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Atributos e Elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Description
enabled Atributo obrigatório.

Especifica se o tempo de execução deteta declarações de invocação de plataforma incorretas e corrige automaticamente a pilha em tempo de execução em plataformas de 32 bits.

atributo enabled

valor Description
0 O tempo de execução usa a arquitetura de empacotamento de interoperabilidade mais rápida introduzida no .NET Framework 4, que não deteta e corrige declarações de invocação de plataforma incorretas. Esta é a predefinição.
1 O tempo de execução usa transições mais lentas que detetam e corrigem declarações de invocação de plataforma incorretas.

Elementos Subordinados

Nenhum.

Elementos Principais

Elemento Description
configuration O elemento raiz em cada arquivo de configuração usado pelo Common Language Runtime e aplicativos .NET Framework.
runtime Contém informações sobre opções de inicialização de tempo de execução.

Observações

Esse elemento permite que você troque uma interoperabilidade mais rápida por resiliência em tempo de execução contra declarações de invocação de plataforma incorretas.

Começando com o .NET Framework 4, uma arquitetura de interoperabilidade simplificada fornece uma melhoria significativa de desempenho para transições de código gerenciado para código não gerenciado. Em versões anteriores do .NET Framework, a camada de empacotamento detetou declarações de invocação de plataforma incorretas em plataformas de 32 bits e corrigiu automaticamente a pilha. A nova arquitetura de empacotamento elimina essa etapa. Como resultado, as transições são muito rápidas, mas uma declaração de invocação de plataforma incorreta pode causar uma falha no programa.

Para facilitar a deteção de declarações incorretas durante o desenvolvimento, a experiência de depuração do Visual Studio foi melhorada. O assistente de depuração gerenciado (MDA) pInvokeStackImbalance notifica você sobre declarações de invocação de plataforma incorretas quando seu aplicativo está sendo executado com o depurador anexado.

Para abordar cenários em que seu aplicativo usa componentes que não podem ser recompilados e que têm declarações de invocação de plataforma incorretas, você pode usar o NetFx40_PInvokeStackResilience elemento . Adicionar esse elemento ao arquivo de configuração do aplicativo com enabled="1" opta por um modo de compatibilidade com o comportamento de versões anteriores do .NET Framework, ao custo de transições mais lentas. Os assemblies que foram compilados em versões anteriores do .NET Framework são automaticamente aceitos nesse modo de compatibilidade e não precisam desse elemento.

Arquivo de configuração

Este elemento só pode ser usado no arquivo de configuração do aplicativo.

Exemplo

O exemplo a seguir mostra como optar por aumentar a resiliência contra declarações de invocação de plataforma incorretas para um aplicativo, ao custo de transições mais lentas entre código gerenciado e não gerenciado.

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

Consulte também