다음을 통해 공유


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

경고 표시 안 함

가능하면 항상 사용 가능한 해결 방법을 사용하는 것이 좋습니다. 그러나 코드를 변경할 수 없는 경우 #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가 다른 더 이상 사용하지 않음 경고를 포함하여 다른 모든 경고를 비활성화하지 않습니다.

참고 항목