具有非預設診斷識別碼的 API 淘汰 (.NET 6)

從 .NET 6 開始,某些 API 已標示為已淘汰。 這項中斷性變更專屬於已標示為已過時且「具有自訂診斷識別碼」的 API。 隱藏 C# 編譯器的預設淘汰診斷識別碼,也就是 CS0618,不會隱藏使用這些 API 時編譯器所產生的警告。

變更描述

在舊版 .NET 中,可以使用這些 API,且不會出現任何建置警告。 在 .NET 6 與更新版本中,使用這些 API 會產生具有自訂診斷識別碼的編譯時期警告或錯誤。 使用自訂診斷識別碼可讓您個別隱藏淘汰警告,而不是隱藏所有淘汰警告。

下表列出已淘汰 API 的自訂診斷識別碼及其對應的警告訊息。

診斷識別碼 描述 嚴重性
SYSLIB0013 在某些情況下,Uri.EscapeUriString(String) 可能會損毀 URI 字串。 請考慮針對查詢字串元件改用 Uri.EscapeDataString(String) 警告
SYSLIB0014 WebRequestHttpWebRequestServicePointWebClient 已淘汰。 請改用 HttpClient 警告
SYSLIB0015 DisablePrivateReflectionAttribute 在 .NET 6+ 中沒有作用。 警告
SYSLIB0016 為了提升效能並減少配置,請使用可以接受引數的 Graphics.GetContextInfo 多載。 警告
SYSLIB0017 不支援強式名稱簽署,而且會擲回 PlatformNotSupportedException 警告
SYSLIB0018 不支援僅限反映的載入,而且會擲回 PlatformNotSupportedException 警告
SYSLIB0019 不再支援 System.Runtime.InteropServices.RuntimeEnvironment 成員 SystemConfigurationFileGetRuntimeInterfaceAsIntPtr(Guid, Guid)GetRuntimeInterfaceAsObject(Guid, Guid),而且會擲回 PlatformNotSupportedException 警告
SYSLIB0020 JsonSerializerOptions.IgnoreNullValues 已經過時。 若要在進行序列化時忽略 null 值,請將 DefaultIgnoreCondition 設定為 JsonIgnoreCondition.WhenWritingNull 警告
SYSLIB0021 衍生的密碼編譯類型已淘汰。 請改用基底類型上的 Create 方法。 警告
SYSLIB0022 RijndaelRijndaelManaged 類型已淘汰。 請改用 Aes 警告
SYSLIB0023 RNGCryptoServiceProvider 已經過時。 若要產生亂數,請改用其中一種 RandomNumberGenerator 靜態方法。 警告
SYSLIB0024 不支援建立和卸載 AppDomains,而且會擲回例外狀況。 警告
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 的多載。 警告

導入的版本

.NET 6

  • 請使用警告上提供的 URL 連結來遵循針對每個診斷識別碼提供的特定指引。

  • 使用淘汰類型或成員的標準診斷識別碼無法隱藏這些淘汰項目的警告或錯誤;請改用自訂 SYSLIBxxxx 診斷識別碼值。

受影響的 API

SYSLIB0013

SYSLIB0014

SYSLIB0015

SYSLIB0016

SYSLIB0017

SYSLIB0018

SYSLIB0019

SYSLIB0020

SYSLIB0021

SYSLIB0022

SYSLIB0023

SYSLIB0024

SYSLIB0025

SYSLIB0026

SYSLIB0027

SYSLIB0028

SYSLIB0029

SYSLIB0030

SYSLIB0031

SYSLIB0032

SYSLIB0033

SYSLIB0034

SYSLIB0035

另請參閱