Elemento <NetFx40_PInvokeStackResilience>

Especifica se o runtime corrige automaticamente declarações de invocação de plataforma incorretas em runtime, às custas de transições mais lentas entre o código gerenciado e não gerenciado.

<configuração>
  <runtime>
    <NetFx40_PInvokeStackResilience>

Syntax

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Atributos e elementos

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

Atributos

Atributo Descrição
enabled Atributo obrigatório.

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

Atributo habilitado

Valor Descrição
0 O runtime usa a arquitetura de marshalling de interoperabilidade mais rápida introduzida no .NET Framework 4, que não detecta e corrige declarações de invocação de plataforma incorretas. Esse é o padrão.
1 O runtime usa transições mais lentas que detectam e corrigem declarações de invocação de plataforma incorretas.

Elementos filho

Nenhum.

Elementos pai

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

Comentários

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

A partir do .NET Framework 4, uma arquitetura de marshalling 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 marshalling detectava declarações de invocação de plataforma incorretas em plataformas de 32 bits e corrigia automaticamente a pilha. A nova arquitetura de marshalling 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 detecção de declarações incorretas durante o desenvolvimento, a experiência de depuração do Visual Studio foi melhorada. O assistente de depuração gerenciada (MDA) pInvokeStackImbalance notifica você sobre declarações de invocação de plataforma incorretas quando seu aplicativo está em execução com o depurador anexado.

Para resolver cenários em que seu aplicativo usa componentes que você não pode recompilar e que têm declarações de invocação de plataforma incorretas, você pode usar o elemento NetFx40_PInvokeStackResilience. Adicionar esse elemento ao arquivo de configuração do aplicativo com opções enabled="1" em 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 pode ser usado apenas no arquivo de configuração do aplicativo.

Exemplo

O exemplo a seguir mostra como optar pelo aumento da resiliência em relação a 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>

Confira também