SYSLIB0045: Některé metody kryptografické továrny jsou zastaralé.
Následující System.Security.Cryptography
metody jsou zastaralé počínaje rozhraním .NET 7. Použití v kódu generuje upozornění SYSLIB0045
v době kompilace. Každá z těchto metod továrny přijímá řetězcový argument, který představuje název algoritmu. Tyto metody volají CryptoConfig.CreateFromName a přetypují výsledek na návratový typ.
- Aes.Create(String)
- AsymmetricAlgorithm.Create(String)
- DES.Create(String)
- ECDiffieHellman.Create(String)
- ECDsa.Create(String)
- HashAlgorithm.Create(String)
- KeyedHashAlgorithm.Create(String)
- RandomNumberGenerator.Create(String)
- RC2.Create(String)
- Rijndael.Create(String)
- RSA.Create(String)
- SHA1.Create(String)
- SHA256.Create(String)
- SHA384.Create(String)
- SHA512.Create(String)
- SymmetricAlgorithm.Create(String)
- TripleDES.Create(String)
Tyto metody byly označeny [Obsolete]
, protože v oříznutých aplikacích se můžou vrátit null
, když by nebyly v neoříznutých aplikacích. V neoříznutých aplikacích také chování těchto metod založených na výjimkách občas překvapí volající a mnoho známých identifikátorů jsou přidruženy k typům, které jsou samy označeny [Obsolete]
.
Alternativní řešení
Volání, která předají konstantní řetězec, by se měla změnit na metodu bez parametrů nebo silné volání pro vytvoření příslušného typu. Volání může být například Aes.Create("AES")
nahrazeno buď Aes.Create()
nebo new AesCryptoServiceProvider()
. Vzhledem k tomu, že AesCryptoServiceProvider typ je také označen [Obsolete]
, Aes.Create()
je upřednostňovanou náhradou.
Volání, která předají nekontinuálový řetězec, můžou buď použít vlastní vyhledávací tabulku, nebo je změnit pro přímé volání CryptoConfig.CreateFromName .
Potlačení upozornění
Pokud musíte použít zastaralá rozhraní API, můžete potlačit upozornění v kódu nebo v souboru projektu.
Chcete-li potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, které chcete zakázat a znovu povolit upozornění.
// Disable the warning.
#pragma warning disable SYSLIB0045
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0045
Pokud chcete potlačit všechna SYSLIB0045
upozornění v projektu, přidejte <NoWarn>
do souboru projektu vlastnost.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0045</NoWarn>
</PropertyGroup>
</Project>
Další informace naleznete v tématu Potlačení upozornění.