非 Windows 平台上沒有 A/W 尾碼探查
在非 Windows 平台上的 P/Invokes 探查期間,.NET 執行階段不會再將 A
或 W
尾碼新增至函式匯出名稱。
導入的版本
5.0
變更描述
Windows 有一項慣例,會將 A
或 W
尾碼分別新增至對應 Windows 字碼頁和 Unicode 版本的 Windows SDK 函式名稱。
在舊版 .NET 中,CoreCLR 和 Mono 執行階段會在「所有平台」上的 P/Invokes 匯出探索期間,將 A
或 W
尾碼新增至匯出名稱。
在 .NET 5 和更新版本中,A
或 W
尾碼「只會在 Windows 上」的匯出探索期間新增至匯出名稱。 在 Unix 平台上,不會新增尾碼。 Windows 平台上這兩個執行階段的語意會保持不變。
變更原因
這項變更是為了簡化跨平台探查。 由於非 Windows 平台不包含此語意,因此這是不應產生的額外負荷。
建議的動作
若要減少變更,您可以在非 Windows 平台上手動新增所需的尾碼。 例如:
[DllImport(...)]
extern static void SetWindowTextW();