Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Tulajdonság | Érték |
|---|---|
| Szabályazonosító | CA1418 |
| Cím | Platformkompatibilitás ellenőrzése |
| Kategória | Együttműködési lehetőség |
| A javítás kompatibilitástörő vagy nem törik | Nem törés |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Figyelmeztetésként |
Ok
A platformkompatibilitás-elemzőhöz érvényes platformnévre és verzióra van szükség. Szabálysértéseket jelent a rendszer, ha a OSPlatformAttribute konstruktornak megadott platformsztring ismeretlen platformnévből áll, vagy ha a választható verziórész érvénytelen.
Szabály leírása
A platformkompatibilitási attribútumok, amelyek az operációs rendszer (OS) platformneveinek sztringkonstansaiból OSPlatformAttribute származnak egy választható verziórészlel. A sztringnek egy ismert platformnévből kell állnia, és nem lehet verzió vagy érvényes verziórész.
Az ismert platformnevek listája két helyről töltődik fel:
Az
PlatformNameőrzési OperatingSystem módszerek neveOperatingSystem.Is<PlatformName>[VersionAtLeast](). A guard metódus OperatingSystem.IsWindows() például hozzáadjaWindowsaz ismert platformnevek listájához.A projekt MSBuild elemcsoportja
SupportedPlatform, beleértve az alapértelmezett MSBuild SupportedPlatforms listát. Ez az ismert platformok projektspecifikus ismerete. Ez lehetővé teszi, hogy az osztálykönyvtár-szerzők további platformokat vegyenek fel az ismert platformok listájára. Példa:<ItemGroup> <SupportedPlatform Include="PlatformName" /> </ItemGroup>
Ha a platform sztringje verziórészt tartalmaz, akkor érvényesnek kell lennie Version a következő formátumban: major.minor[.build[.revision]].
Megsértése
Solarisismeretlen platformnév, mert nem szerepel az alapértelmezett MSBuild SupportedPlatforms listában, és nincs az osztálybanOperatingSystem.IsSolaris()elnevezett OperatingSystem őrmetódus.[SupportedOSPlatform("Solaris")] // Warns: The platform 'Solaris' is not a known platform name. public void SolarisApi() { }Androidismert platform, mert létezik egy OperatingSystem.IsAndroid() védelmi módszer a OperatingSystem típusban. A verziórész azonban nem érvényes verzió. Legalább két egész számnak kell lennie egy ponttal elválasztva.[UnsupportedOSPlatform("Android10")] // Warns: Version '10' is not valid for platform 'Android'. Use a version with 2-4 parts for this platform. public void DoesNotWorkOnAndroid() { }Linuxismert platform, mert szerepel az alapértelmezett MSBuild SupportedPlatforms listában, és van egy őrmetódus is.OperatingSystem.IsLinux() A platformhozSystem.OperatingSystem.IsLinuxVersionAtLeast(int,int)hasonlóLinuxverziójú védelmi módszerek azonban nem léteznek, ezért linuxos verziós rész nem támogatott.[SupportedOSPlatform("Linux4.8")] // Warns: Version '4.8' is not valid for platform 'Linux'. Do not use versions for this platform. public void LinuxApi() { }
Szabálysértések kijavítása
Módosítsa a platformot egy ismert platformnévre.
Ha a platform neve helyes, és ismert platformként szeretné beállítani, vegye fel a projektfájl MSBuild SupportedPlatforms listájára:
<ItemGroup> <SupportedPlatform Include="Solaris" /> </ItemGroup>[SupportedOSPlatform("Solaris")] // No warning public void SolarisApi() { }Javítsa ki az érvénytelen verziót. Például nem
Android10érvényes verzió, hanem10.0érvényes.// 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() { }Ha a platform nem támogatja a verziót, távolítsa el a verziórészt.
// 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() { }
Mikor kell letiltani a figyelmeztetéseket?
Ismeretlen platformnév vagy érvénytelen verzió használata nem ajánlott, ezért ne tiltsa le ezt a szabályt.