<> элемент 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>
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по