<> элемент NetFx40_PInvokeStackResilience

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

<Конфигурации>
  <Среды выполнения>
    <NetFx40_PInvokeStackResilience>

Синтаксис

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

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

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

Атрибуты

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

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

Атрибут enabled

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

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

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

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

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

Комментарии

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

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

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

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

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

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

Пример

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

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

См. также раздел