Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| Properti | Nilai |
|---|---|
| ID Aturan | CA1418 |
| Judul | Periksa kompatibilitas platform |
| Kategori | Interoperabilitas |
| Perbaikan bersifat merusak atau tidak merusak | Tidak terputus |
| Diaktifkan secara default di .NET 10 | Sebagai peringatan |
| Bahasa yang berlaku | C# dan Visual Basic |
Penyebab
Penganalisis kompatibilitas platform memerlukan nama dan versi platform yang valid. Pelanggaran dilaporkan jika string platform yang diberikan kepada OSPlatformAttribute konstruktor terdiri dari nama platform yang tidak dikenal atau jika bagian versi opsional tidak valid.
Deskripsi aturan
Atribut kompatibilitas platform yang berasal dari OSPlatformAttribute menggunakan literal string untuk nama platform sistem operasi (OS) dengan versi opsional. String harus terdiri dari nama platform yang diketahui dan tanpa bagian versi atau dengan bagian versi yang valid.
Daftar nama platform yang diketahui diisi dari dua tempat:
Bagian
PlatformNamedari metode pelindung OperatingSystem yang bernamaOperatingSystem.Is<PlatformName>[VersionAtLeast](). Misalnya, metode OperatingSystem.IsWindows() menambahkanWindowske daftar nama platform yang diketahui.Grup item
SupportedPlatformdalam proyek MSBuild, termasuk daftar MSBuild SupportedPlatforms default. Ini adalah pengetahuan spesifik proyek tentang platform yang diketahui. Ini memungkinkan penulis pustaka kelas untuk menambahkan lebih banyak platform ke dalam daftar platform yang diketahui. Contohnya:<ItemGroup> <SupportedPlatform Include="PlatformName" /> </ItemGroup>
Jika string platform berisi bagian versi , string tersebut harus valid Version dengan format berikut: major.minor[.build[.revision]].
Pelanggaran
Solarisadalah nama platform yang tidak diketahui karena tidak disertakan dalam daftar MSBuild SupportedPlatforms default dan tidak ada metode penjaga bernamaOperatingSystem.IsSolaris()di OperatingSystem kelas .[SupportedOSPlatform("Solaris")] // Warns: The platform 'Solaris' is not a known platform name. public void SolarisApi() { }Androidadalah platform yang terkenal karena ada OperatingSystem.IsAndroid() metode penjagaan dalam OperatingSystem tipe. Namun, bagian versi bukan versi yang valid. Ini harus memiliki setidaknya dua bilangan bulat yang dipisahkan oleh titik.[UnsupportedOSPlatform("Android10")] // Warns: Version '10' is not valid for platform 'Android'. Use a version with 2-4 parts for this platform. public void DoesNotWorkOnAndroid() { }Linuxadalah platform yang diketahui karena disertakan dalam daftar MSBuild SupportedPlatforms default, dan ada juga metode penjaga bernama OperatingSystem.IsLinux(). Namun, tidak ada metode penjaga versi sepertiSystem.OperatingSystem.IsLinuxVersionAtLeast(int,int)untukLinuxplatform, oleh karena itu tidak ada bagian versi yang didukung di Linux.[SupportedOSPlatform("Linux4.8")] // Warns: Version '4.8' is not valid for platform 'Linux'. Do not use versions for this platform. public void LinuxApi() { }
Cara memperbaiki pelanggaran
Ubah platform menjadi nama platform yang sudah dikenal.
Jika nama platform sudah benar dan Anda ingin menjadikannya platform yang dikenal, tambahkan ke daftar MSBuild SupportedPlatforms dalam file proyek Anda:
<ItemGroup> <SupportedPlatform Include="Solaris" /> </ItemGroup>[SupportedOSPlatform("Solaris")] // No warning public void SolarisApi() { }Perbaiki versi yang tidak valid. Misalnya, untuk
Android,10bukan versi yang valid, tetapi10.0valid.// Before [UnsupportedOSPlatform("Android10")] // Warns: Version '10' is not valid for platform 'Android'. Use a version with 2-4 parts for this platform. public void DoesNotWorkOnAndroid() { } // After [UnsupportedOSPlatform("Android10.0")] // No warning. public void DoesNotWorkOnAndroid() { }Jika platform tidak mendukung versi, hapus bagian versi.
// Before [SupportedOSPlatform("Linux4.8")] // Warns: Version '4.8' is not valid for platform 'Linux'. Do not use versions for this platform. public void LinuxApi() { } // After [SupportedOSPlatform("Linux")] // No warning. public void LinuxApi() { }
Kapan harus menekan peringatan
Menggunakan nama platform yang tidak diketahui atau versi yang tidak valid tidak disarankan, jadi Anda tidak boleh menekan aturan ini.