<NetFx40_PInvokeStackResilience> 元素
指定运行时是否以减慢托管和非托管代码之间的转换速度为代价,在运行时自动修复不正确的平台调用声明。
<配置>
<运行库>
<NetFx40_PInvokeStackResilience>
语法
<NetFx40_PInvokeStackResilience enabled="1|0"/>
特性和元素
下列各节描述了特性、子元素和父元素。
特性
属性 | 描述 |
---|---|
enabled |
必需的特性。 指定运行时是否检测到错误的平台调用声明,并在运行时自动修复 32 位平台上的堆栈。 |
enabled 特性
值 | 说明 |
---|---|
0 |
运行时使用 .NET Framework 4 中引入的更快的互操作封送处理体系结构,它不会检测和修复不正确的平台调用声明。 这是默认值。 |
1 |
运行时使用较慢的转换来检测和修复不正确的平台调用声明。 |
子元素
无。
父元素
元素 | 说明 |
---|---|
configuration |
公共语言运行时和 .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>