Отсутствует проверка суффикса 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();