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

.NET-runtimer lägger inte längre till ett A-suffix eller ett W-suffix till funktionsexportnamn vid avsökning efter P/Invokes på icke-Windows plattformar.

Version lanserad

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-runtime ett A eller W-suffix till exportnamnet under exportupptäckning 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 ändring

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