Obsolescências de API com IDs de diagnóstico não padrão (.NET 6)
Algumas APIs foram marcadas como obsoletas, começando no .NET 6. Essa alteração interruptiva é específica para APIs que foram marcadas como obsoletas com uma ID de diagnóstico personalizada. A supressão da ID de diagnóstico de obsolescência padrão, que é CS0618 para o compilador C#, não suprime os avisos que o compilador gera quando essas APIs são usadas.
Descrição das alterações
Nas versões anteriores do .NET, essas APIs podem ser usadas sem qualquer aviso de build. No .NET 6 e em versões posteriores, o uso dessas APIs produz um aviso ou um erro de tempo de compilação com uma ID de diagnóstico personalizada. O uso de IDs de diagnóstico personalizadas permite suprimir os avisos de obsolescência individualmente, em vez de suprimir todos eles.
A tabela a seguir lista as IDs de diagnóstico personalizadas e suas mensagens de aviso correspondentes para as APIs obsoletas.
ID do diagnóstico | Descrição | Severidade |
---|---|---|
SYSLIB0013 | Uri.EscapeUriString(String) pode corromper a cadeia de caracteres URI em alguns casos. Em vez disso, considere usar Uri.EscapeDataString(String) para os componentes da cadeia de caracteres de consulta. | Aviso |
SYSLIB0014 | WebRequest, HttpWebRequest, ServicePoint e WebClient estão obsoletos. Use HttpClient em vez disso. | Aviso |
SYSLIB0015 | DisablePrivateReflectionAttribute não tem efeito no .NET 6+. | Aviso |
SYSLIB0016 | Para melhor desempenho e menos alocações, use as sobrecargas de Graphics.GetContextInfo que aceitam argumentos. | Aviso |
SYSLIB0017 | A assinatura de nome forte não é compatível e lança PlatformNotSupportedException. | Aviso |
SYSLIB0018 | O carregamento somente por reflexão não é compatível e lança PlatformNotSupportedException. | Aviso |
SYSLIB0019 | Os membros de System.Runtime.InteropServices.RuntimeEnvironment – SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) e GetRuntimeInterfaceAsObject(Guid, Guid) – não têm mais suporte e lançam PlatformNotSupportedException. | Aviso |
SYSLIB0020 | JsonSerializerOptions.IgnoreNullValues é obsoleto. Para ignorar valores nulos ao serializar, defina DefaultIgnoreCondition como JsonIgnoreCondition.WhenWritingNull. | Aviso |
SYSLIB0021 | Os tipos criptográficos derivados são obsoletos. Em vez disso, use o método Create no tipo base. |
Aviso |
SYSLIB0022 | Os tipos Rijndael e RijndaelManaged estão obsoletos. Use Aes em vez disso. | Aviso |
SYSLIB0023 | RNGCryptoServiceProvider é obsoleto. Para gerar um número aleatório, em vez disso use um dos métodos estáticos de RandomNumberGenerator. | Aviso |
SYSLIB0024 | Criar e descarregar AppDomains não é compatível e lança uma exceção. | Aviso |
SYSLIB0025 | SuppressIldasmAttribute não tem efeito no .NET 6+. | Aviso |
SYSLIB0026 | X509Certificate e X509Certificate2 são imutáveis. Use o construtor apropriado para criar um certificado. | Aviso |
SYSLIB0027 | PublicKey.Key é obsoleto. Use o método apropriado para obter a chave pública, como GetRSAPublicKey(). | Aviso |
SYSLIB0028 | X509Certificate2.PrivateKey é obsoleto. Use o método apropriado para obter a chave privada, como RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), ou use o método X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) para criar uma instância com uma chave privada. | Aviso |
SYSLIB0029 | ProduceLegacyHmacValues é obsoleto. Não há mais suporte para a produção de valores HMAC herdados. |
Aviso |
SYSLIB0030 | HMACSHA1 sempre usa a implementação de algoritmos fornecida pela plataforma. Use um construtor sem o parâmetro useManagedSha1 . |
Aviso |
SYSLIB0031 | CryptoConfig.EncodeOID(String) é obsoleto. Use a funcionalidade ASN.1 fornecida em System.Formats.Asn1. | Aviso |
SYSLIB0032 | Não há suporte para a recuperação de exceções de estado de processo corrompido; HandleProcessCorruptedStateExceptionsAttribute é ignorado. | Aviso |
SYSLIB0033 | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) é obsoleto e não compatível. Use PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) em vez disso. | Aviso |
SYSLIB0034 | CmsSigner(CspParameters) é obsoleto. Em vez disso, use um construtor alternativo. | Aviso |
SYSLIB0035 | SignerInfo.ComputeCounterSignature() é obsoleto. Em vez disso, use a sobrecarga que aceita um CmsSigner. | Aviso |
Versão introduzida
.NET 6
Ação recomendada
Siga as diretrizes específicas fornecidas para cada ID de diagnóstico usando o link de URL fornecido no aviso.
Os avisos ou os erros relacionados a essas obsolescências não podem ser suprimidos usando a ID de diagnóstico padrão para tipos obsoletos ou membros. Use o valor personalizado da ID de diagnóstico
SYSLIBxxxx
.
APIs afetadas
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