不在非 Windows 平台上探测 A/W 后缀

在非 Windows 平台上探测 P/Invokes 期间,.NET 运行时不再为函数导出名称添加 AW 后缀。

已引入的版本

5.0

更改描述

Windows 具有向 Windows SDK 函数名称添加 AW 后缀的约定,这些名称分别对应于 Windows 代码页和 Unicode 版本。

在较早版本的 .NET 中,CoreCLR 和 Mono 运行时在 P/Invokes 的导出发现期间,会在A向导出名称添加W后缀。

而对于 .NET 5 及更高版本,在导出发现过程中,仅在 Windows 上向导出名称添加 AW 后缀。 在 Unix 平台上,不会添加后缀。 Windows 平台上两个运行时的语义保持不变。

更改原因

此更改旨在简化跨平台探测。 由于非 Windows 平台不包含此语义,因此不应产生开销。

若要缓解更改,可以在非 Windows 平台上手动添加所需的后缀。 例如:

[DllImport(...)]
extern static void SetWindowTextW();

受影响的 API