Bagikan melalui


Tidak ada pemeriksaan akhiran A/W pada platform non-Windows

Runtime .NET tidak lagi menambahkan akhiran A atau W ke nama ekspor fungsi selama pemeriksaan untuk P/Invokes pada platform non-Windows.

Versi yang diperkenalkan

5.0

Deskripsi perubahan

Windows memiliki konvensi untuk menambahkan akhiran A atau W ke nama fungsi Windows SDK, yang masing-masing sesuai dengan halaman kode Windows dan versi Unicode.

Dalam versi .NET sebelumnya, runtime CoreCLR dan Mono menambahkan A akhiran atau W ke nama ekspor selama penemuan ekspor untuk P/Invokes di semua platform.

Di .NET 5 dan versi yang lebih baru, akhiran A atau W ditambahkan ke nama ekspor selama penemuan ekspor di Windows saja. Pada platform Unix, akhiran tidak ditambahkan. Semantik kedua runtime pada platform Windows tetap tidak berubah.

Alasan untuk berubah

Perubahan ini dilakukan untuk menyederhanakan pemeriksaan lintas platform. Ini adalah overhead yang seharusnya tidak dikeluarkan, mengingat bahwa platform non-Windows tidak berisi semantik ini.

Untuk mengurangi perubahan, Anda dapat menambahkan akhiran yang diinginkan secara manual pada platform non-Windows. Misalnya:

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

API yang Terpengaruh