<> Элемент NetFx40_PInvokeStackResilience
Указывает, исправляет ли автоматически среда выполнения неправильные объявления вызова неуправляемого кода во время выполнения за счет скорости перехода между управляемыми и неуправляемым кодом.
<configuration>
<среда выполнения>
<NetFx40_PInvokeStackResilience>
Синтаксис
<NetFx40_PInvokeStackResilience enabled="1|0"/>
Атрибуты и элементы
В следующих разделах описаны атрибуты, дочерние и родительские элементы.
Атрибуты
Атрибут | Description |
---|---|
enabled |
Обязательный атрибут элемента . Указывает, обнаруживает ли среда выполнения неправильные объявления вызова платформы и автоматически исправляет стек во время выполнения на 32-разрядных платформах. |
Атрибут enabled
значение | Описание |
---|---|
0 |
Среда выполнения использует более быструю архитектуру маршалинга взаимодействия, представленную в платформа .NET Framework 4, которая не обнаруживает и не исправляет неправильные объявления вызова платформы. Это значение по умолчанию. |
1 |
Среда выполнения использует более медленные переходы, которые обнаруживают и исправляют неправильные объявления вызова платформы. |
Дочерние элементы
Нет.
Родительские элементы
Элемент | Description |
---|---|
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>