Udostępnij za pośrednictwem


Brak sondowania sufiksu A/W na platformach innych niż Windows

Środowiska uruchomieniowe platformy .NET nie dodają już sufiksu A ani W do nazw eksportu funkcji podczas sondowania dla operacji P/Invoke na platformach innych niż Windows.

Wprowadzona wersja

5,0

Opis zmiany

System Windows ma konwencję dodawania sufiksu A lub W sufiksu do nazw funkcji zestawu WINDOWS SDK, które odpowiadają odpowiednio stronie kodowej systemu Windows i wersji Unicode.

W poprzednich wersjach platformy .NET środowiska uruchomieniowe CoreCLR i Mono dodają sufiks A lub W do nazwy eksportu podczas odnajdywania operacji P/Invoke na wszystkich platformach.

W wersjach .NET 5 i nowszych do nazwy eksportu jest dodawany sufiks A lub W podczas odnajdywania eksportu tylko w systemie Windows. Na platformach Unix sufiks nie jest dodawany. Semantyka obu środowisk uruchomieniowych na platformie Windows pozostaje niezmieniona.

Przyczyna wprowadzenia zmiany

Ta zmiana została wprowadzona w celu uproszczenia sondowania międzyplatformowego. Jest to obciążenie, które nie powinno być naliczane, biorąc pod uwagę, że platformy inne niż Windows nie zawierają tej semantyki.

Aby rozwiązać ten problem, możesz ręcznie dodać żądany sufiks na platformach innych niż Windows. Na przykład:

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

Dotyczy interfejsów API