非 Windows 平台上沒有 A/W 尾碼探查

在非 Windows 平台上的 P/Invokes 探查期間,.NET 執行階段不會再將 AW 尾碼新增至函式匯出名稱。

導入的版本

5.0

變更描述

Windows 有一項慣例,會將 AW 尾碼分別新增至對應 Windows 字碼頁和 Unicode 版本的 Windows SDK 函式名稱。

在舊版 .NET 中,CoreCLR 和 Mono 執行階段會在「所有平台」上的 P/Invokes 匯出探索期間,將 AW 尾碼新增至匯出名稱。

在 .NET 5 和更新版本中,AW 尾碼「只會在 Windows 上」的匯出探索期間新增至匯出名稱。 在 Unix 平台上,不會新增尾碼。 Windows 平台上這兩個執行階段的語意會保持不變。

變更原因

這項變更是為了簡化跨平台探查。 由於非 Windows 平台不包含此語意,因此這是不應產生的額外負荷。

若要減少變更,您可以在非 Windows 平台上手動新增所需的尾碼。 例如:

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

受影響的 API