Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA1418 |
| Başlık | Platform uyumluluğunu doğrula |
| Kategori | Birlikte çalışabilirlik |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Uyarı olarak |
| Geçerli diller | C# ve Visual Basic |
Neden
Platform uyumluluk çözümleyicisi geçerli bir platform adı ve sürümü gerektirir. Oluşturucuya sağlanan platform dizesi bilinmeyen bir platform adından OSPlatformAttribute oluşuyorsa veya isteğe bağlı sürüm bölümü geçersizse ihlaller bildirilir.
Kural açıklaması
'den OSPlatformAttribute türetilen platform uyumluluk öznitelikleri, işletim sistemi (OS) platform adlarını tanımlamak amacıyla, isteğe bağlı bir sürüm bölümüyle birlikte dize değişmez değerleri kullanır. Dize, bilinen bir platform adından oluşmalıdır ve sürüm parçası veya geçerli bir sürüm bölümü olmamalıdır.
Bilinen platform adları listesi iki yerden doldurulur:
PlatformNameOperatingSystem koruma yöntemlerininOperatingSystem.Is<PlatformName>[VersionAtLeast]()bölümü. Örneğin, guard yöntemi OperatingSystem.IsWindows() bilinen platform adları listesine eklerWindows.Varsayılan MSBuild SupportedPlatforms listesi de dahil olmak üzere projenin
SupportedPlatformöğelerinden oluşan MSBuild öğe grubu. Bu, bilinen platformlar hakkında projeye özgü bilgilerdir. Sınıf kitaplığı yazarlarının bilinen platformlar listesine daha fazla platform eklemesine olanak tanır. Örneğin:<ItemGroup> <SupportedPlatform Include="PlatformName" /> </ItemGroup>
Platform dizesi bir sürüm bölümü içeriyorsa, geçerli bir Version olması ve şu biçimi alması gerekir: major.minor[.build[.revision]].
Ihlal
bilinmeyen bir platform adıdır çünkü varsayılan MSBuild SupportedPlatforms listesine dahil değildir vesınıfında adlı bir guard yöntemi yoktur. [SupportedOSPlatform("Solaris")] // Warns: The platform 'Solaris' is not a known platform name. public void SolarisApi() { }Android, OperatingSystem.IsAndroid() türündeki bir koruma yöntemi OperatingSystem'de olduğu için bilinen bir platformdur. Ancak, sürüm bölümü geçerli bir sürüm değildir. Noktayla ayrılmış en az iki tamsayı olmalıdır.[UnsupportedOSPlatform("Android10")] // Warns: Version '10' is not valid for platform 'Android'. Use a version with 2-4 parts for this platform. public void DoesNotWorkOnAndroid() { }Linuxbilinen bir platformdur çünkü varsayılan MSBuild DesteklenenPlatformlar listesine dahil edilmiştir ve OperatingSystem.IsLinux() adlı bir koruma yöntemi de bulunmaktadır. Ancak, platform içinSystem.OperatingSystem.IsLinuxVersionAtLeast(int,int)gibiLinuxbir sürüme sahip koruma yöntemi yoktur, bu nedenle Linux'ta sürüm bölümü desteklenmez.[SupportedOSPlatform("Linux4.8")] // Warns: Version '4.8' is not valid for platform 'Linux'. Do not use versions for this platform. public void LinuxApi() { }
İhlalleri düzeltme
Platformu bilinen bir platform adıyla değiştirin.
Platform adı doğruysa ve bunu bilinen bir platform yapmak istiyorsanız, bunu proje dosyanızdaki MSBuild SupportedPlatforms listesine ekleyin:
<ItemGroup> <SupportedPlatform Include="Solaris" /> </ItemGroup>[SupportedOSPlatform("Solaris")] // No warning public void SolarisApi() { }Geçersiz sürümü düzeltin. Örneğin, için
Android10geçerli bir sürüm değildir, ancak10.0geçerlidir.// 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() { }Platform bir sürümü desteklemiyorsa sürüm bölümünü kaldırın.
// 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() { }
Uyarıların ne zaman bastırılması gerekiyor?
Bilinmeyen bir platform adı veya geçersiz bir sürüm kullanılması önerilmez, bu nedenle bu kuralı gizlememelisiniz.