다음을 통해 공유


SYSLIB0045: 일부 암호화 팩터리 메서드는 사용되지 않습니다.

다음 System.Security.Cryptography 메서드는 .NET 7부터 사용되지 않는 것으로 표시됩니다. 코드에서 이러한 API를 사용하면 컴파일 시간에 SYSLIB0045 경고가 생성됩니다. 이러한 각 팩터리 메서드는 알고리즘 이름을 나타내는 문자열 인수를 허용합니다. 이러한 메서드는 CryptoConfig.CreateFromName을 호출하고 결과를 반환 형식으로 캐스팅합니다.

이러한 메서드는 트리밍되지 않은 애플리케이션에서 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>

자세한 내용은 경고 표시 안 함을 참조하세요.