Obsolescencias de API con identificadores de diagnóstico no predeterminados (.NET 6)
Algunas API se han marcado como obsoletas a partir de .NET 6. Este cambio importante es específico de las API que se han marcado como obsoletas con un identificador de diagnóstico personalizado. La supresión del identificador de diagnóstico de obsolescencia predeterminado, que es CS0618 en el caso del compilador de C#, no suprime las advertencias que genera el compilador cuando se usan estas API.
Descripción del cambio
En versiones anteriores de .NET, estas API se pueden usar sin ninguna advertencia de compilación. En .NET 6 y versiones posteriores, el uso de estas API genera una advertencia o un error en tiempo de compilación con un identificador de diagnóstico personalizado. El uso de identificadores de diagnóstico personalizados permite suprimir las advertencias de obsolescencia de forma individual en lugar de realizar una supresión global de todas las advertencias de obsolescencia.
En la tabla siguiente se indican los identificadores de diagnóstico personalizados y sus mensajes de advertencia correspondientes para las API obsoletas.
Id. de diagnóstico | Descripción | severity |
---|---|---|
SYSLIB0013 | Uri.EscapeUriString(String) puede dañar la cadena de URI en algunos casos. Considere la posibilidad de usar en su lugar Uri.EscapeDataString(String) para los componentes de cadena de consulta. | Advertencia |
SYSLIB0014 | WebRequest, HttpWebRequest, ServicePoint y WebClient están obsoletos. En su lugar, use HttpClient. | Advertencia |
SYSLIB0015 | DisablePrivateReflectionAttribute no tiene ningún efecto a partir de .NET 6. | Advertencia |
SYSLIB0016 | Para mejorar el rendimiento y reducir las asignaciones, use las sobrecargas Graphics.GetContextInfo que aceptan argumentos. | Advertencia |
SYSLIB0017 | La firma de nombres seguros no se admite y genera la excepción PlatformNotSupportedException. | Advertencia |
SYSLIB0018 | La carga solo con reflexión no se admite y genera la excepción PlatformNotSupportedException. | Advertencia |
SYSLIB0019 | Los miembros System.Runtime.InteropServices.RuntimeEnvironmentSystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) y GetRuntimeInterfaceAsObject(Guid, Guid) ya no se admiten y generan una excepción PlatformNotSupportedException. | Advertencia |
SYSLIB0020 | JsonSerializerOptions.IgnoreNullValues está obsoleto. Para pasar por alto los valores NULL al serializar, establezca DefaultIgnoreCondition en JsonIgnoreCondition.WhenWritingNull. | Advertencia |
SYSLIB0021 | Los tipos criptográficos derivados están obsoletos. Use el método Create en el tipo base en su lugar. |
Advertencia |
SYSLIB0022 | Los tipos Rijndael y RijndaelManaged están obsoletos. Utilice Aes en su lugar. | Advertencia |
SYSLIB0023 | RNGCryptoServiceProvider está obsoleto. Para generar un número aleatorio, use uno de los métodos estáticos RandomNumberGenerator en su lugar. | Advertencia |
SYSLIB0024 | No se admite la creación y descarga de AppDomains y se produce una excepción. | Advertencia |
SYSLIB0025 | SuppressIldasmAttribute no tiene ningún efecto a partir de .NET 6. | Advertencia |
SYSLIB0026 | X509Certificate y X509Certificate2 son inmutables. Use el constructor adecuado para crear un certificado. | Advertencia |
SYSLIB0027 | PublicKey.Key está obsoleto. Use el método adecuado para obtener la clave pública, como GetRSAPublicKey(). | Advertencia |
SYSLIB0028 | X509Certificate2.PrivateKey está obsoleto. Use el método adecuado para obtener la clave privada, como RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), o el método X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) para crear una nueva instancia con una clave privada. | Advertencia |
SYSLIB0029 | ProduceLegacyHmacValues está obsoleto. Ya no se admite la generación de valores HMAC heredados. |
Advertencia |
SYSLIB0030 | HMACSHA1 siempre usa la implementación de algoritmos proporcionada por la plataforma. Use un constructor sin el parámetro useManagedSha1 . |
Advertencia |
SYSLIB0031 | CryptoConfig.EncodeOID(String) está obsoleto. Use la funcionalidad ASN.1 proporcionada en System.Formats.Asn1. | Advertencia |
SYSLIB0032 | No se admite la recuperación de excepciones de estado de proceso dañado; HandleProcessCorruptedStateExceptionsAttribute se omite. | Advertencia |
SYSLIB0033 | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) está obsoleto y no se admite. En su lugar, use PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]). | Advertencia |
SYSLIB0034 | CmsSigner(CspParameters) está obsoleto. En su lugar, use un constructor alternativo. | Advertencia |
SYSLIB0035 | SignerInfo.ComputeCounterSignature() está obsoleto. En su lugar, use la sobrecarga que acepta un objeto CmsSigner. | Advertencia |
Versión introducida
.NET 6
Acción recomendada
Siga las instrucciones específicas proporcionadas para cada identificador de diagnóstico mediante el vínculo de dirección URL que aparece en la advertencia.
Las advertencias o los errores de estas obsolescencias no pueden suprimirse mediante el identificador de diagnóstico estándar para tipos o miembros obsoletos; use el valor del identificador de diagnóstico
SYSLIBxxxx
personalizado en su lugar.
API afectadas
SYSLIB0013
SYSLIB0014
SYSLIB0015
SYSLIB0016
SYSLIB0017
SYSLIB0018
- System.Reflection.Assembly.ReflectionOnlyLoad
- System.Reflection.Assembly.ReflectionOnlyLoadFrom(String)
- System.Type.ReflectionOnlyGetType(String, Boolean, Boolean)
SYSLIB0019
- System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile
- System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeInterfaceAsIntPtr(Guid, Guid)
- System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeInterfaceAsObject(Guid, Guid)
SYSLIB0020
SYSLIB0021
- System.Security.Cryptography.AesCryptoServiceProvider
- System.Security.Cryptography.AesManaged
- System.Security.Cryptography.DESCryptoServiceProvider
- System.Security.Cryptography.MD5CryptoServiceProvider
- System.Security.Cryptography.RC2CryptoServiceProvider
- System.Security.Cryptography.SHA1CryptoServiceProvider
- System.Security.Cryptography.SHA1Managed
- System.Security.Cryptography.SHA256Managed
- System.Security.Cryptography.SHA256CryptoServiceProvider
- System.Security.Cryptography.SHA384Managed
- System.Security.Cryptography.SHA384CryptoServiceProvider
- System.Security.Cryptography.SHA512Managed
- System.Security.Cryptography.SHA512CryptoServiceProvider
- System.Security.Cryptography.TripleDESCryptoServiceProvider