Элемент <NetFx40_PInvokeStackResilience>

Указывает, исправляет ли автоматически среда выполнения неправильные объявления вызова неуправляемого кода во время выполнения за счет скорости перехода между управляемыми и неуправляемым кодом.

<configuration>
  <runtime>
    <NetFx40_PInvokeStackResilience>

Синтаксис

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут Описание
enabled Обязательный атрибут.

Указывает, обнаруживает ли среда выполнения неверные объявления вызова неуправляемого кода и автоматически исправляет стек во время выполнения на 32-разрядных платформах.

Атрибут enabled

Значение Описание
0 Среда выполнения использует более быструю архитектуру маршалинга взаимодействия, представленную в платформа .NET Framework 4, которая не обнаруживает и не устраняет неверные объявления вызова неуправляемого кода. Это значение по умолчанию.
1 Среда выполнения использует медленные переходы, которые обнаруживают и исправляют неверные объявления вызова неуправляемого кода.

Дочерние элементы

Отсутствует.

Родительские элементы

Элемент Описание
configuration Корневой элемент в любом файле конфигурации, используемом средой CLR и приложениями .NET Framework.
runtime Содержит сведения о параметрах инициализации среды выполнения.

Remarks

Этот элемент позволяет ускорить маршалинг взаимодействия для устойчивости во время выполнения по неправильным объявлениям вызова неуправляемого кода.

Начиная с платформа .NET Framework 4, оптимизированная архитектура маршалинга взаимодействия обеспечивает значительное повышение производительности при переходе от управляемого кода к неуправляемому. В более ранних версиях платформа .NET Framework слой упаковки обнаружил неверные объявления вызова неуправляемого кода на 32-разрядных платформах и автоматически устранил стек. Новая архитектура маршалирования устраняет этот шаг. В результате переходы выполняются очень быстро, но неправильное объявление вызова неуправляемого кода может привести к сбою программы.

Чтобы упростить обнаружение неверных объявлений во время разработки, улучшен процесс отладки в Visual Studio. Помощник по отладке управляемого кода пинвокестаккимбаланце (MDA) уведомляет вас о неправильном объявлении вызова платформы, когда приложение выполняется с присоединенным отладчиком.

Для решения сценариев, в которых приложение использует компоненты, которые нельзя перекомпилировать, с неправильными объявлениями вызова неуправляемого кода, можно использовать NetFx40_PInvokeStackResilience элемент. Добавление этого элемента в файл конфигурации приложения с enabled="1" режимом совместимости с поведением более ранних версий платформа .NET Framework за счет более медленных переходов. Сборки, скомпилированные для более ранних версий платформа .NET Framework, автоматически включаются в этот режим совместимости и не нуждаются в этом элементе.

Файл конфигурации

Этот элемент может использоваться только в файле конфигурации приложения.

Пример

В следующем примере показано, как выбрать повышенную устойчивость к неправильным объявлениям вызова неуправляемого кода для приложения за счет более медленных переходов между управляемым и неуправляемым кодом.

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

См. также