CA2252: Özellikleri kullanmadan önce önizlemeye katılma

Ö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.

CA2252 uyarılı kod düzenleyicisi.

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 örnekte APreviewMethod, RequiresPreviewFeatures özelliği ile açıkladığından, çözümleyici APreviewMethod iç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.

CA2252 - Önizleme Algılama Özelliği Tanılamayı Gizleme

CA2252 - Arabirim Uygulamalarını Açıkça İşaretle

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.

Ayrıca bkz.