Поделиться через


Отсутствует проверка суффикса A/W на платформах, отличных от Windows

Среды выполнения .NET больше не добавляют суффиксы A или W к именам экспортируемых функций во время проверки для P/Invokes на платформах, отличных от Windows.

Представленные версии

5,0

Описание изменения

По соглашению Windows, к именам функций Windows SDK, которые соответствуют кодовой странице Windows и версиям Юникода, добавляются суффиксы A и W соответственно.

В предыдущих версиях .NET в средах выполнения CoreCLR и Mono к именам экспорта добавлялись суффиксы A или W во время обнаружения экспорта для P/Invokes на всех платформах.

В .NET 5 и более поздней версии суффиксы A или W добавляется к именам экспорта во время обнаружения экспорта только в Windows. На платформах UNIX суффикс не добавляется. Семантика обеих сред выполнения на платформе Windows остается неизменной.

Причина изменения

Это изменение было внесено с целью упрощения проверки на нескольких платформах. Это изменение не должно привести к дополнительным издержкам, так как платформы, отличные от Windows, не содержат такой семантики.

Чтобы ослабить эффект этого изменения, можно вручную добавить требуемый суффикс на платформах, отличных от Windows. Например:

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

Затронутые API