SYSLIB0045: 일부 암호화 팩터리 메서드는 사용되지 않습니다.
다음 System.Security.Cryptography
메서드는 .NET 7부터 사용되지 않는 것으로 표시됩니다. 코드에서 이러한 API를 사용하면 컴파일 시간에 SYSLIB0045
경고가 생성됩니다. 이러한 각 팩터리 메서드는 알고리즘 이름을 나타내는 문자열 인수를 허용합니다. 이러한 메서드는 CryptoConfig.CreateFromName을 호출하고 결과를 반환 형식으로 캐스팅합니다.
- 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)
이러한 메서드는 트리밍되지 않은 애플리케이션에서 null
을 반환하지 않을 때 트리밍된 애플리케이션에서 반환할 수 있으므로 [Obsolete]
로 표시되었습니다. 또한 트리밍되지 않은 애플리케이션에서 이러한 메서드의 예외 기반 동작은 때때로 호출자를 놀라게 하며, 잘 알려진 많은 식별자는 자체적으로 [Obsolete]
로 표시된 형식과 연결됩니다.
해결 방법
상수 문자열을 전달하는 호출은 매개 변수가 없는 팩터리 메서드 또는 강력한 호출로 변경하여 적절한 형식을 만들어야 합니다. 예를 들어 Aes.Create("AES")
에 대한 호출을 Aes.Create()
또는 new AesCryptoServiceProvider()
로 바꿀 수 있습니다. AesCryptoServiceProvider 형식도 [Obsolete]
로 표시되므로 Aes.Create()
가 기본 설정 대체 항목입니다.
비 상수 문자열을 전달하는 호출은 자체 조회 테이블을 사용하거나 직접 CryptoConfig.CreateFromName을 호출하도록 변경할 수 있습니다.
경고 표시 안 함
사용되지 않는 API를 사용해야 하는 경우, 코드 또는 프로젝트 파일에서 경고를 표시하지 않을 수 있습니다.
단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 경고를 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.
// Disable the warning.
#pragma warning disable SYSLIB0045
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0045
프로젝트에서 모든 SYSLIB0045
경고를 표시하지 않으려면 프로젝트 파일에 <NoWarn>
속성을 추가합니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0045</NoWarn>
</PropertyGroup>
</Project>
자세한 내용은 경고 표시 안 함을 참조하세요.
.NET