다음을 통해 공유


.NET 5+에서 사용되지 않는 기능

.NET 5부터 사용되지 않는 것으로 새로 표시되는 일부 API는 ObsoleteAttribute에서 두 개의 새 속성을 사용합니다.

  • ObsoleteAttribute.DiagnosticId 속성은 사용자 지정 진단 ID를 사용하여 빌드 경로를 생성하도록 컴파일러에 알립니다. 사용자 지정 ID를 사용하면 사용되지 않음 경고를 별도로 표시하지 않을 수 있습니다. .NET 5+ 사용되지 않음에서 사용자 지정 진단 ID의 형식은 SYSLIB0XXX입니다.

  • ObsoleteAttribute.UrlFormat 속성은 사용되지 않음에 대한 자세한 정보를 제공하는 URL 링크를 포함하도록 컴파일러에 알립니다.

사용되지 않는 API 사용으로 인해 빌드 경고나 오류가 발생하면 참조 섹션에 나열된 진단 ID에 대해 제공되는 특정 지침을 따르세요. 이러한 사용되지 않음에 대한 경고나 오류는 사용되지 않는 형식이나 멤버에 대한 표준 진단 ID(CS0618)를 사용하여 표시하지 않을 수 ‘없으며’, 사용자 지정 SYSLIB0XXX 진단 ID를 대신 사용해야 합니다. 자세한 내용은 경고 표시 안 함을 참조하세요.

참조

다음 표에서는 .NET 5+의 SYSLIB0XXX 사용되지 않음에 대한 인덱스를 제공합니다.

진단 ID 경고 또는 오류 설명
SYSLIB0001 Warning UTF-7 인코딩은 안전하지 않으므로 사용해서는 안 됩니다. 대신 UTF-8을 사용하세요.
SYSLIB0002 Error PrincipalPermissionAttribute는 런타임에 적용되지 않으며 사용해서는 안 됩니다.
SYSLIB0003 Warning CAS(코드 액세스 보안)가 런타임에 지원되거나 적용되지 않습니다.
SYSLIB0004 Warning CER(제약이 있는 실행 영역) 기능이 지원되지 않습니다.
SYSLIB0005 Warning GAC(전역 어셈블리 캐시)가 지원되지 않습니다.
SYSLIB0006 Warning Thread.Abort()이 지원되지 않으며 PlatformNotSupportedException을 throw합니다.
SYSLIB0007 Warning 이 암호화 알고리즘의 기본 구현이 지원되지 않습니다.
SYSLIB0008 Warning CreatePdbGenerator() API가 지원되지 않으며 PlatformNotSupportedException을 throw합니다.
SYSLIB0009 Warning AuthenticationManager은 지원되지 않습니다. 메서드는 작동하지 않거나 PlatformNotSupportedException을 throw합니다.
SYSLIB0010 Warning 일부 원격 API가 지원되지 않으며 PlatformNotSupportedException을 throw합니다.
SYSLIB0011 Warning BinaryFormatter serialization이 사용되지 않으며 사용해서는 안 됩니다.
SYSLIB0012 Warning Assembly.CodeBaseAssembly.EscapedCodeBase은 .NET Framework 호환성을 위해서만 포함됩니다. 대신 Assembly.Location를 사용하세요.
SYSLIB0013 Warning Uri.EscapeUriString(String)은 경우에 따라 Uri 문자열을 손상할 수 있습니다. 쿼리 문자열 구성 요소에 대신 Uri.EscapeDataString(String)을 사용하세요.
SYSLIB0014 Warning WebRequest, HttpWebRequest, ServicePoint, WebClient는 더 이상 사용되지 않습니다. 대신 HttpClient를 사용하세요.
SYSLIB0015 Warning DisablePrivateReflectionAttribute는 .NET 6 이상에 영향을 주지 않습니다.
SYSLIB0016 Warning 더 나은 성능과 더 적은 할당을 위해 인수를 받는 Graphics.GetContextInfo 오버로드를 사용하세요.
SYSLIB0017 Warning 강력한 이름 서명은 지원되지 않으며 PlatformNotSupportedException을 throw합니다.
SYSLIB0018 Warning 리플렉션 전용 로드는 지원되지 않으며 PlatformNotSupportedException을 throw합니다.
SYSLIB0019 Warning System.Runtime.InteropServices.RuntimeEnvironment 멤버 SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid), GetRuntimeInterfaceAsObject(Guid, Guid)는 더 이상 지원되지 않으며 PlatformNotSupportedException을 throw합니다.
SYSLIB0020 Warning JsonSerializerOptions.IgnoreNullValues는 사용되지 않습니다. 직렬화할 때 null 값을 무시하려면 DefaultIgnoreConditionJsonIgnoreCondition.WhenWritingNull으로 설정하세요.
SYSLIB0021 Warning 파생된 암호화 형식은 더 이상 사용되지 않습니다. 대신 기본 형식의 Create 메서드를 사용합니다.
SYSLIB0022 Warning RijndaelRijndaelManaged 형식은 사용되지 않습니다. 대신 Aes를 사용하세요.
SYSLIB0023 Warning RNGCryptoServiceProvider는 사용되지 않습니다. 난수를 생성하려면 RandomNumberGenerator 정적 메서드 중 하나를 대신 사용합니다.
SYSLIB0024 Warning AppDomains 생성 및 언로드는 지원되지 않으며 예외를 throw합니다.
SYSLIB0025 Warning SuppressIldasmAttribute는 .NET 6 이상에 영향을 주지 않습니다.
SYSLIB0026 Warning X509CertificateX509Certificate2는 변경할 수 없습니다. 적절한 생성자를 사용하여 새 인증서를 만듭니다.
SYSLIB0027 Warning PublicKey.Key는 사용되지 않습니다. 적절한 메서드를 사용하여 GetRSAPublicKey()와 같은 퍼블릭 키를 가져옵니다.
SYSLIB0028 Warning X509Certificate2.PrivateKey는 사용되지 않습니다. 적절한 메서드를 사용하여 프라이빗 키(예: RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2))를 가져오거나, X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) 메서드를 사용하여 프라이빗 키로 새 인스턴스를 만듭니다.
SYSLIB0029 Warning ProduceLegacyHmacValues는 사용되지 않습니다. 레거시 HMAC 값 생성은 더 이상 지원되지 않습니다.
SYSLIB0030 Warning HMACSHA1은 항상 플랫폼에서 제공하는 알고리즘 구현을 사용합니다. useManagedSha1 매개 변수 없이 생성자를 사용합니다.
SYSLIB0031 Warning CryptoConfig.EncodeOID(String)는 사용되지 않습니다. System.Formats.Asn1에 제공된 ASN.1 기능을 사용합니다.
SYSLIB0032 Warning 손상된 프로세스 상태 예외에서 복구하는 기능은 지원되지 않음, HandleProcessCorruptedStateExceptionsAttribute는 무시됩니다.
SYSLIB0033 Warning Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[])는 사용되지 않으며 지원되지 않습니다. 대신 PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[])를 사용하세요.
SYSLIB0034 Warning CmsSigner(CspParameters)는 사용되지 않습니다. 대신 대체 생성자를 사용합니다.
SYSLIB0035 Warning SignerInfo.ComputeCounterSignature()는 사용되지 않습니다. 대신 CmsSigner를 수락하는 오버로드를 사용합니다.
SYSLIB0036 Warning Regex.CompileToAssembly는 사용되지 않으며 지원되지 않습니다. 대신 정규식 소스 생성기와 함께 RegexGeneratorAttribute를 사용하세요.
SYSLIB0037 Warning AssemblyName 멤버 HashAlgorithm, ProcessorArchitectureVersionCompatibility는 더 이상 사용되지 않으므로 지원되지 않습니다.
SYSLIB0038 Warning SerializationFormat.Binary는 더 이상 사용되지 않으므로 사용하면 안 됩니다.
SYSLIB0039 Warning TLS 버전 1.0 및 1.1에는 알려진 취약성이 있으므로 권장되지 않습니다. 대신 최신 TLS 버전을 사용하거나 SslProtocols.None을 사용하여 OS 기본값을 따릅니다.
SYSLIB0040 Warning EncryptionPolicy.NoEncryptionEncryptionPolicy.AllowNoEncryption은 보안을 크게 저하시키므로 프로덕션 코드에 사용하면 안 됩니다.
SYSLIB0041 Warning Rfc2898DeriveBytes 생성자의 기본 해시 알고리즘과 반복 횟수는 오래되었으며 안전하지 않습니다. 해시 알고리즘과 반복 횟수를 허용하는 생성자를 사용합니다.
SYSLIB0042 Warning ToXmlStringFromXmlString에는 ECC(타원 곡선 암호화) 형식이 구현되지 않았으며 더 이상 사용되지 않습니다. 공개 키에는 ExportSubjectPublicKeyInfo 또는 ImportSubjectPublicKeyInfo, 프라이빗 키에는 ExportPkcs8PrivateKey 또는 ImportPkcs8PrivateKey와 같은 표준 가져오기 및 내보내기 형식을 사용합니다.
SYSLIB0043 Warning ECDiffieHellmanPublicKey.ToByteArray() 및 관련 생성자는 모든 플랫폼에서 일관되고 상호 운용 가능한 구현을 갖고 있지 않습니다. 대신 ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo()를 사용하세요.
SYSLIB0044 Warning AssemblyName.CodeBaseAssemblyName.EscapedCodeBase는 사용되지 않습니다. 어셈블리를 로드하는 데 사용하는 것은 지원되지 않습니다.
SYSLIB0045 Warning 알고리즘 이름을 허용하는 암호화 팩터리 메서드는 더 이상 사용되지 않습니다. 대신 알고리즘 형식에 매개 변수가 없는 Create 팩터리 메서드를 사용합니다.
SYSLIB0046 Warning ControlledExecution.Run(Action, CancellationToken) 메서드가 프로세스를 손상할 수 있으므로 프로덕션 코드에서 사용하면 안 됩니다.
SYSLIB0047 Warning XmlSecureResolver는 사용되지 않습니다. XML 외부 엔터티 해결을 금지하려고 할 때 대신 XmlResolver.ThrowingResolver를 사용합니다.
SYSLIB0048 Warning RSA.EncryptValue(Byte[])RSA.DecryptValue(Byte[])는 사용되지 않습니다. 대신 RSA.EncryptRSA.Decrypt을 사용하세요.
SYSLIB0049 Warning JsonSerializerOptions.AddContext는 사용되지 않습니다. JsonSerializerContext를 등록하려면 TypeInfoResolver 또는 TypeInfoResolverChain 속성을 사용합니다.
SYSLIB0050 Warning 포맷터 기반 serialization은 사용되지 않으며 사용해서는 안 됩니다.
SYSLIB0051 Warning 사용되지 않는 포맷터 기반 serialization을 지원하는 API는 사용되지 않습니다. 애플리케이션 코드에서 호출하거나 확장해서는 안 됩니다.
SYSLIB0052 Warning Regex 확장성을 위해 사용되지 않는 메커니즘을 지원하는 API는 사용되지 않습니다.
SYSLIB0053 Warning AesGcm은 암호화 및 암호 해독에 필요한 태그 크기를 나타내야 합니다. 태그 크기를 허용하는 생성자를 사용합니다.
SYSLIB0054 Warning Thread.VolatileReadThread.VolatileWrite는 사용되지 않습니다. 대신 Volatile.Read 또는 Volatile.Write를 사용하십시오.
SYSLIB0055 Warning 서명된 매개 변수가 있는 AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* 메서드는 더 이상 사용되지 않습니다. 대신 서명되지 않은 오버로드를 사용합니다.

경고 표시 안 함

가능하면 항상 사용 가능한 해결 방법을 사용하는 것이 좋습니다. 그러나 코드를 변경할 수 없는 경우 #pragma 지시문 또는 <NoWarn> 프로젝트 설정을 통해 경고를 표시하지 않을 수 있습니다. 사용되지 않는 API를 사용해야 하고 SYSLIB0XXX 진단에서 오류로 표시되는 경우 코드 또는 프로젝트 파일에서 경고를 표시하지 않을 수 있습니다.

코드에서 경고를 표시하지 않으려면 다음을 수행합니다.

// Disable the warning.
#pragma warning disable SYSLIB0001

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

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

프로젝트 파일에서 경고를 표시하지 않으려면 다음을 수행합니다.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net6.0</TargetFramework>
   <!-- NoWarn below suppresses SYSLIB0001 project-wide -->
   <NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
   <!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
   <NoWarn>$(NoWarn);SYSLIB0002</NoWarn>
   <NoWarn>$(NoWarn);SYSLIB0003</NoWarn>
   <!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
   <NoWarn>$(NoWarn);SYSLIB0001;SYSLIB0002;SYSLIB0003</NoWarn>
  </PropertyGroup>
</Project>

참고

이런 식으로 경고를 표시하지 않으면 지정한 사용하지 않음 경고만 사용하지 않도록 설정됩니다. 진단 ID가 다른 사용하지 않음 경고를 포함하여 다른 모든 경고는 사용하지 않도록 설정되지 않습니다.

참고 항목