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 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

  • 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

SYSLIB0019

SYSLIB0020

SYSLIB0021

SYSLIB0022

SYSLIB0023

SYSLIB0024

SYSLIB0025

SYSLIB0026

SYSLIB0027

SYSLIB0028

SYSLIB0029

SYSLIB0030

SYSLIB0031

SYSLIB0032

SYSLIB0033

SYSLIB0034

SYSLIB0035

Vea también