Dela via


Ingen A/W-suffixsökning på plattformar som inte är Windows-plattformar

.NET-körningen lägger inte längre till ett A suffix eller W suffix för funktionsexportnamn under avsökning för P/Invokes på plattformar som inte är Windows-plattformar.

Version introducerad

5,0

Ändra beskrivning

Windows har en konvention om att lägga till ett A eller W suffix till Windows SDK-funktionsnamn, vilket motsvarar Windows-kodsidan respektive Unicode-versionerna.

I tidigare versioner av .NET lägger både CoreCLR- och Mono-körningen till ett A eller W suffix till exportnamnet under exportidentifieringen för P/Invokes på alla plattformar.

I .NET 5 och senare versioner läggs ett A suffix eller W suffix till i exportnamnet endast under exportidentifiering i Windows. På Unix-plattformar läggs suffixet inte till. Semantiken för båda körningarna på Windows-plattformen förblir oförändrad.

Orsak till ändringen

Den här ändringen gjordes för att förenkla plattformsoberoende avsökning. Det är omkostnader som inte bör uppstå, med tanke på att icke-Windows-plattformar inte innehåller den här semantiken.

För att minimera ändringen kan du lägga till önskat suffix manuellt på plattformar som inte är Windows-plattformar. Till exempel:

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

Berörda API:er