Aracılığıyla paylaş


SYSLIB0045: Bazı şifreleme fabrikası yöntemleri kullanımdan kaldırılmış

Aşağıdaki System.Security.Cryptography yöntemler .NET 7'den başlayarak eskidir. Bunları kodda kullanmak, derleme zamanında uyarı SYSLIB0045 oluşturur. Bu fabrika yöntemlerinin her biri algoritma adını temsil eden bir dize bağımsız değişkenini kabul eder. Bu yöntemler öğesini CryptoConfig.CreateFromName çağırır ve sonucu dönüş türüne döndürür.

Kırpılan uygulamalarda kırpılmayan uygulamalarda döndürebileceğinden null bu yöntemler işaretlendi[Obsolete]. Ayrıca, kırpılmayan uygulamalarda, bu yöntemlerin özel durum tabanlı davranışları bazen çağıranları şaşırtır ve iyi bilinen tanımlayıcıların çoğu kendileri olarak işaretlenmiş [Obsolete]türlerle ilişkilendirilir.

Geçici çözüm

Sabit bir dize geçiren çağrılar parametresiz fabrika yöntemine veya uygun türü oluşturmak için güçlü bir çağrıya değiştirilmelidir. Örneğin, çağrısı Aes.Create("AES") veya new AesCryptoServiceProvider()ile Aes.Create() değiştirilebilir. Türü de işaretlendiğinden AesCryptoServiceProvider[Obsolete]Aes.Create(), tercih edilen değişimdir.

Sabit olmayan bir dize geçiren çağrılar kendi arama tablosunu kullanabilir veya doğrudan çağrı CryptoConfig.CreateFromName yapmak için değiştirilebilir.

Uyarıyı gizleme

Eski API'leri kullanmanız gerekiyorsa, uyarıyı kodda veya proje dosyanızda gizleyebilirsiniz.

Yalnızca tek bir ihlali engellemek için, önişlemci yönergelerini kaynak dosyanıza ekleyerek uyarıyı devre dışı bırakın ve sonra yeniden etkinleştirin.

// Disable the warning.
#pragma warning disable SYSLIB0045

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0045

Projenizdeki tüm SYSLIB0045 uyarıları engellemek için proje dosyanıza bir <NoWarn> özellik ekleyin.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0045</NoWarn>
  </PropertyGroup>
</Project>

Daha fazla bilgi için bkz . Uyarıları gizleme.