Características obsoletas en .NET 5+
A partir de .NET 5, algunas API recién marcadas como obsoletas usan dos nuevas propiedades en ObsoleteAttribute.
La propiedad ObsoleteAttribute.DiagnosticId indica al compilador que genere advertencias de compilación mediante un identificador de diagnóstico personalizado. El identificador personalizado permite que las advertencias de obsolescencia se supriman específicamente y de forma independiente entre sí. En el caso de las obsolescencias de .NET 5+, el formato del identificador de diagnóstico personalizado es
SYSLIB0XXX
.La propiedad ObsoleteAttribute.UrlFormat indica al compilador que incluya un vínculo de dirección URL para obtener más información sobre la obsolescencia.
Si se producen advertencias o errores de compilación debido al uso de una API obsoleta, siga las instrucciones específicas proporcionadas para el identificador de diagnóstico en la sección Referencia. Las advertencias o los errores de estas obsolescencias no pueden suprimirse mediante el identificador de diagnóstico estándar (CS0618) para tipos o miembros obsoletos; use los valores del identificador de diagnóstico SYSLIB0XXX
personalizado en su lugar. Para obtener más información, vea Suprimir advertencias.
Referencia
En la tabla siguiente se proporciona un índice de las obsolescencias SYSLIB0XXX
en .NET 5+.
Id. de diagnóstico | Advertencia o error | Descripción |
---|---|---|
SYSLIB0001 | Advertencia | La codificación UTF-7 no es segura y no debe usarse. Considere la posibilidad de usar UTF-8 en su lugar. |
SYSLIB0002 | Error | El entorno de ejecución no respeta PrincipalPermissionAttribute y no debe usarse. |
SYSLIB0003 | Advertencia | La seguridad de acceso del código (CAS) no es compatible o el entorno de ejecución no la respeta. |
SYSLIB0004 | Advertencia | No se admite la característica de regiones de ejecución restringidas (CER). |
SYSLIB0005 | Advertencia | No se admite la caché global de ensamblados (GAC). |
SYSLIB0006 | Advertencia | Thread.Abort() no se admite y produce una PlatformNotSupportedException. |
SYSLIB0007 | Advertencia | La implementación predeterminada de este algoritmo de criptografía no es compatible. |
SYSLIB0008 | Advertencia | La API CreatePdbGenerator() no se admite y produce una PlatformNotSupportedException. |
SYSLIB0009 | Advertencia | No se admite AuthenticationManager. Los métodos no funcionarán ni producirán PlatformNotSupportedException. |
SYSLIB0010 | Advertencia | No se admiten algunas API de comunicación remota y producen una PlatformNotSupportedException. |
SYSLIB0011 | Advertencia | La serialización BinaryFormatter está obsoleta y no debe usarse. |
SYSLIB0012 | Advertencia | Assembly.CodeBase y Assembly.EscapedCodeBase solo se incluyen para la compatibilidad con .NET Framework. Utilice Assembly.Location en su lugar. |
SYSLIB0013 | Advertencia | 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. |
SYSLIB0014 | Advertencia | WebRequest, HttpWebRequest, ServicePoint y WebClient están obsoletos. En su lugar, use HttpClient. |
SYSLIB0015 | Advertencia | DisablePrivateReflectionAttribute no tiene ningún efecto a partir de .NET 6. |
SYSLIB0016 | Advertencia | Para mejorar el rendimiento y reducir las asignaciones, use las sobrecargas Graphics.GetContextInfo que aceptan argumentos. |
SYSLIB0017 | Advertencia | La firma de nombres seguros no se admite y genera la excepción PlatformNotSupportedException. |
SYSLIB0018 | Advertencia | La carga solo con reflexión no se admite y genera la excepción PlatformNotSupportedException. |
SYSLIB0019 | Advertencia | Los miembros System.Runtime.InteropServices.RuntimeEnvironmentSystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) y GetRuntimeInterfaceAsObject(Guid, Guid) ya no se admiten y generan una excepción PlatformNotSupportedException. |
SYSLIB0020 | Advertencia | JsonSerializerOptions.IgnoreNullValues está obsoleto. Para pasar por alto los valores NULL al serializar, establezca DefaultIgnoreCondition en JsonIgnoreCondition.WhenWritingNull. |
SYSLIB0021 | Advertencia | Los tipos criptográficos derivados están obsoletos. Use el método Create en el tipo base en su lugar. |
SYSLIB0022 | Advertencia | Los tipos Rijndael y RijndaelManaged están obsoletos. Utilice Aes en su lugar. |
SYSLIB0023 | Advertencia | RNGCryptoServiceProvider está obsoleto. Para generar un número aleatorio, use uno de los métodos estáticos RandomNumberGenerator en su lugar. |
SYSLIB0024 | Advertencia | No se admite la creación y descarga de AppDomains y se produce una excepción. |
SYSLIB0025 | Advertencia | SuppressIldasmAttribute no tiene ningún efecto a partir de .NET 6. |
SYSLIB0026 | Advertencia | X509Certificate y X509Certificate2 son inmutables. Use el constructor adecuado para crear un certificado. |
SYSLIB0027 | Advertencia | PublicKey.Key está obsoleto. Use el método adecuado para obtener la clave pública, como GetRSAPublicKey(). |
SYSLIB0028 | Advertencia | 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. |
SYSLIB0029 | Advertencia | ProduceLegacyHmacValues está obsoleto. Ya no se admite la generación de valores HMAC heredados. |
SYSLIB0030 | Advertencia | HMACSHA1 siempre usa la implementación de algoritmos proporcionada por la plataforma. Use un constructor sin el parámetro useManagedSha1 . |
SYSLIB0031 | Advertencia | CryptoConfig.EncodeOID(String) está obsoleto. Use la funcionalidad ASN.1 proporcionada en System.Formats.Asn1. |
SYSLIB0032 | Advertencia | No se admite la recuperación de excepciones de estado de proceso dañado; HandleProcessCorruptedStateExceptionsAttribute se omite. |
SYSLIB0033 | Advertencia | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) está obsoleto y no se admite. En su lugar, use PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]). |
SYSLIB0034 | Advertencia | CmsSigner(CspParameters) está obsoleto. En su lugar, use un constructor alternativo. |
SYSLIB0035 | Advertencia | SignerInfo.ComputeCounterSignature() está obsoleto. En su lugar, use la sobrecarga que acepta un objeto CmsSigner. |
SYSLIB0036 | Advertencia | Regex.CompileToAssembly está obsoleto y no se admite. Use RegexGeneratorAttribute en su lugar con el generador de origen de expresiones regulares. |
SYSLIB0037 | Advertencia | Los miembros AssemblyName, HashAlgorithm, ProcessorArchitecture y VersionCompatibility se consideran obsoletos y no se admiten. |
SYSLIB0038 | Advertencia | SerializationFormat.Binary está obsoleto y no debe usarse. |
SYSLIB0039 | Advertencia | Las versiones 1.0 y 1.1 de TLS tienen vulnerabilidades conocidas y no se recomiendan. En su lugar, use una versión de TLS más reciente, o bien SslProtocols.None para aplazar los valores predeterminados del sistema operativo. |
SYSLIB0040 | Advertencia | EncryptionPolicy.NoEncryption y EncryptionPolicy.AllowNoEncryption reducen significativamente la seguridad y no deben usarse en el código de producción. |
SYSLIB0041 | Advertencia | El algoritmo hash predeterminado y los recuentos de iteración en los constructores Rfc2898DeriveBytes están obsoletos y son inseguros. Use un constructor que acepte el algoritmo hash y el número de iteraciones. |
SYSLIB0042 | Advertencia | ToXmlString y FromXmlString no tienen ninguna implementación para los tipos de criptografía de curva elíptica (ECC) y están obsoletos. Use un formato de importación y exportación estándar, como ExportSubjectPublicKeyInfo o ImportSubjectPublicKeyInfo para claves públicas, o bien ExportPkcs8PrivateKey o ImportPkcs8PrivateKey para claves privadas. |
SYSLIB0043 | Advertencia | ECDiffieHellmanPublicKey.ToByteArray() y el constructor asociado no tienen ninguna implementación coherente e interoperable en todas las plataformas. Utilice ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() en su lugar. |
SYSLIB0044 | Advertencia | AssemblyName.CodeBase y AssemblyName.EscapedCodeBase están obsoletos. No se admite su uso para cargar un ensamblado. |
SYSLIB0045 | Advertencia | Los Factory Methods criptográficos que aceptan un nombre de algoritmo están obsoletos. En su lugar, use el Factory Method Create sin parámetros en el tipo de algoritmo. |
SYSLIB0046 | Advertencia | El método ControlledExecution.Run(Action, CancellationToken) podría dañar el proceso y no debe usarse en ningún código de producción. |
SYSLIB0047 | Advertencia | XmlSecureResolver está obsoleto. Use XmlResolver.ThrowingResolver en su lugar al intentar prohibir la resolución de entidades externas XML. |
SYSLIB0048 | Advertencia | RSA.EncryptValue(Byte[]) y RSA.DecryptValue(Byte[]) están obsoletos. Utilice RSA.Encrypt y RSA.Decrypt en su lugar. |
SYSLIB0049 | Advertencia | JsonSerializerOptions.AddContext está obsoleto. Para registrar un JsonSerializerContext, use la propiedad TypeInfoResolver o TypeInfoResolverChain. |
SYSLIB0050 | Advertencia | La serialización basada en formateador está obsoleta y no debe usarse. |
SYSLIB0051 | Advertencia | Las API que admiten la serialización basada en formateador obsoleta están obsoletas. El código de la aplicación no debe llamarlas ni ampliarlas. |
SYSLIB0052 | Advertencia | Las API que admiten mecanismos obsoletos para la extensibilidad Regex están obsoletas. |
SYSLIB0053 | Advertencia | AesGcm debe indicar el tamaño de etiqueta necesario para el cifrado y el descifrado. Use un constructor que acepte el tamaño de etiqueta. |
SYSLIB0054 | Advertencia | Thread.VolatileRead y Thread.VolatileWrite están obsoletos. Use Volatile.Read o Volatile.Write en su lugar. |
SYSLIB0055 | Advertencia | Los métodos AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* con parámetros firmados están obsoletos. Alternativamente, use sobrecargas sin firmar. |
SYSLIB0056 | Advertencia | Assembly.LoadFrom con un AssemblyHashAlgorithm personalizado está obsoleto. Use sobrecargas sin un AssemblyHashAlgorithm . |
SYSLIB0057 | Advertencia | los constructores X509Certificate2 y X509Certificate para el contenido binario y de archivo están obsoletos. |
Suprimir advertencias
Se recomienda usar una solución alternativa disponible siempre que sea posible. Pero, si no puede cambiar el código, puede suprimir las advertencias por medio de una directiva #pragma
o la opción de configuración del proyecto <NoWarn>
. Si debe usar las API obsoletas y el diagnóstico SYSLIB0XXX
no se ve como un error, puede suprimir la advertencia en el código o en el archivo del proyecto.
Para suprimir las advertencias en el código:
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Para suprimir las advertencias en un archivo de proyecto:
<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>
Nota
La supresión de advertencias de esta manera solo deshabilita las advertencias de obsolescencia que especifique. No deshabilita ninguna otra advertencia, incluidas las de obsolescencia con otros identificadores de diagnóstico.
Vea también
- Obsolescencias de API con identificadores de diagnóstico no predeterminados (.NET 5)
- Obsolescencias de API con identificadores de diagnóstico no predeterminados (.NET 6)
- Obsolescencias de API con identificadores de diagnóstico no predeterminados (.NET 7)
- Obsolescencias de API con identificadores de diagnóstico no predeterminados (.NET 8)