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 | CA2252 |
| Başlık | Özellikleri kullanmadan önce önizlemeyi kabul etme |
| Kategori | Kullanım |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Hata olarak |
| Geçerli diller | C# ve Visual Basic |
Neden
İstemci, yerel seviyede veya modül ya da derleme seviyesinde açıkça seçmeden, önizleme API'lerini veya türlerini derlemesinde kullanır.
Kural açıklaması
RequiresPreviewFeaturesAttribute özniteliğiyle etiketlendirilmiş bir API veya derleme kullanıldığında, bu kural çağrı sitesinin önizleme özelliklerini kabul edip etmediğini kontrol eder. Aşağıdakilerden biri geçerliyse, bir çağrı noktası özellik önizlemesine katılmayı seçmiştir:
- Bir ek açıklama kapsamındadır
RequiresPreviewFeaturesAttribute. - Zaten önizleme özelliklerine katılan bir derlemenin veya modülün parçasıdır.
Aşağıdaki görüntüde CA2252 tanılama örneği gösterilmektedir.
Burada, Lib yönteminde Main bir önizleme türü oluşturulur.
Main'nin kendisi bir önizleme yöntemi olarak tanımlanmadığından, Main içindeki iki oluşturucu çağrısında tanılama oluşturulur.
İhlalleri düzeltme
İhlalleri düzeltmenin iki yolu vardır:
ile üst
RequiresPreviewFeaturesAttributeöğesine açıklama ekleyerek bir arama sitesini ek açıklama kapsamına getirin. Önceki örnekteAPreviewMethod,RequiresPreviewFeaturesözelliği ile açıkladığından, çözümleyiciAPreviewMethodiçindeki önizleme türü kullanımını yoksayar. Sonuç olarak,APreviewMethod'yi çağıranların benzer bir işlem yapması gerekecek.Özellikleri derleme veya modül düzeyinde önizlemeyi de seçebilirsiniz. Bu, çözümleyiciye derlemedeki önizleme türü kullanımının istendiğini ve sonuç olarak bu kural tarafından hata üretilmediğini gösterir. Bu, önizleme bağımlılıklarını kullanmanın tercih edilen yoludur. Derlemenin tamamında önizleme özelliklerini etkinleştirmek için bir dosyada özelliğini ayarlayın:
<PropertyGroup>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldaki uyarıların engellenmesi yalnızca API'lerdeki tanılamaların açıkça devre dışı bırakılması gereken gelişmiş kullanım örnekleri için önerilir. Bu durumda, önizleme API'lerini uygun şekilde işaretleme sorumluluğunu üstlenmeye istekli olmanız gerekir. Örneğin, mevcut bir türün yeni bir önizleme arabirimi uyguladığı bir durumu göz önünde bulundurun. Türün tamamı önizleme olarak işaretlenemediğinden (geriye dönük uyumluluk için), tür tanımıyla ilgili tanılama yerel olarak devre dışı bırakılabilir. Ayrıca, önizleme arabirimi uygulamalarını önizleme olarak işaretlemeniz gerekir. Şimdi, mevcut tür daha önce olduğu gibi kullanılabilir, ancak yeni arabirim yöntemlerine yapılan çağrılar tanılama alır.
System.Private.CoreLib.csproj, , Int32ve Doublegibi Decimalsayısal türlerde genel matematik özelliklerini kullanıma açmak için bu tekniği kullanır.
Aşağıdaki görüntülerde CA2252 çözümleyicisinin yerel olarak nasıl devre dışı bırakılacağı gösterilmektedir.
Not
Aşağıdakilerin tümü geçerliyse bu kuraldan hatalı pozitif uyarılar görebilirsiniz:
- Visual Studio 2022 sürüm 17.5 veya üzerini .NET SDK'nın daha eski bir sürümüyle ( .NET 6 veya önceki bir sürüm) kullanıyorsunuz.
- .NET 6 SDK'sından çözümleyicileri veya çözümleyici paketlerinin Microsoft.CodeAnalysis.FxCopAnalyzers gibi eski bir sürümünü kullanıyorsunuz.
Bu durumda hatalı pozitif uyarıyı bastırmak güvenlidir. Hatalı pozitifler, C# derleyicisindeki büyük bir değişiklikten kaynaklanmaktadır. Hatalı pozitif uyarıların düzeltmesini içeren daha yeni bir çözümleyici kullanmayı düşünün. Microsoft.CodeAnalysis.NetAnalyzers sürüm 7.0.0-preview1.22464.1 veya daha yeni bir sürüme yükseltin veya .NET 7 SDK'sından çözümleyicileri kullanın.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA2252
// The code that's violating the rule is on this line.
#pragma warning restore CA2252
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA2252.severity = none
Bu kural kategorisinin tamamını devre dışı bırakmak için, kategorinin önem derecesini noneyapılandırma dosyasında olarak ayarlayın.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.