Recursos obsoletos no .NET 5+
A partir do .NET 5, algumas APIs recém-marcadas como obsoletas usam duas novas propriedades no ObsoleteAttribute.
A ObsoleteAttribute.DiagnosticId propriedade diz ao compilador para gerar avisos de compilação usando uma ID de diagnóstico personalizada. O ID personalizado permite que o aviso de obsolescência seja suprimido especificamente e separadamente um do outro. No caso das obsolações do .NET 5+, o formato para a ID de diagnóstico personalizada é
SYSLIB0XXX
.A ObsoleteAttribute.UrlFormat propriedade diz ao compilador para incluir um link de URL para saber mais sobre a obsolescência.
Se você encontrar avisos ou erros de compilação devido ao uso de uma API obsoleta, siga as orientações específicas fornecidas para a ID de diagnóstico listada na seção Referência . Avisos ou erros para essas obsolescências não podem ser suprimidos usando a ID de diagnóstico padrão (CS0618) para tipos ou membros obsoletos, use os valores de ID de diagnóstico personalizadosSYSLIB0XXX
. Para obter mais informações, consulte Suprimir avisos.
Referência
A tabela a seguir fornece um índice para as SYSLIB0XXX
obsolações no .NET 5+.
ID de diagnóstico | Aviso ou erro | Description |
---|---|---|
SYSLIB0001 | Aviso | A codificação UTF-7 é insegura e não deve ser usada. Considere usar UTF-8 em vez disso. |
SYSLIB0002 | Erro | PrincipalPermissionAttribute não é honrado pelo tempo de execução e não deve ser usado. |
SYSLIB0003 | Aviso | A segurança de acesso ao código (CAS) não é suportada ou respeitada pelo tempo de execução. |
SYSLIB0004 | Aviso | O recurso de região de execução restrita (CER) não é suportado. |
SYSLIB0005 | Aviso | O cache de assembly global (GAC) não é suportado. |
SYSLIB0006 | Aviso | Thread.Abort() não é suportado PlatformNotSupportedExceptione lança . |
SYSLIB0007 | Aviso | A implementação padrão deste algoritmo de criptografia não é suportada. |
SYSLIB0008 | Aviso | A CreatePdbGenerator() API não é suportada PlatformNotSupportedExceptione lança . |
SYSLIB0009 | Aviso | AuthenticationManager não é suportado. Os métodos serão no-op ou throw PlatformNotSupportedException. |
SYSLIB0010 | Aviso | Algumas APIs de comunicação remota não são suportadas e lançam PlatformNotSupportedException. |
SYSLIB0011 | Aviso | BinaryFormatter A serialização é obsoleta e não deve ser usada. |
SYSLIB0012 | Aviso | Assembly.CodeBase e Assembly.EscapedCodeBase estão incluídos apenas para compatibilidade com o .NET Framework. Utilize Assembly.Location em substituição. |
SYSLIB0013 | Aviso | Uri.EscapeUriString(String) pode corromper a cadeia de caracteres Uri em alguns casos. Em vez disso, considere usar Uri.EscapeDataString(String) para componentes de cadeia de caracteres de consulta. |
SYSLIB0014 | Aviso | WebRequest, HttpWebRequest, ServicePoint, e WebClient são obsoletas. Utilize HttpClient em substituição. |
SYSLIB0015 | Aviso | DisablePrivateReflectionAttribute não tem efeito no .NET 6+. |
SYSLIB0016 | Aviso | Use as Graphics.GetContextInfo sobrecargas que aceitam argumentos para um melhor desempenho e menos alocações. |
SYSLIB0017 | Aviso | A assinatura de nome forte não é suportada PlatformNotSupportedExceptione lança . |
SYSLIB0018 | Aviso | O carregamento somente reflexo não é suportado PlatformNotSupportedExceptione lança . |
SYSLIB0019 | Aviso | Os System.Runtime.InteropServices.RuntimeEnvironment membros SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid)e GetRuntimeInterfaceAsObject(Guid, Guid) não são mais apoiados e lançam PlatformNotSupportedException. |
SYSLIB0020 | Aviso | JsonSerializerOptions.IgnoreNullValues está obsoleta. Para ignorar valores nulos durante a serialização, defina DefaultIgnoreCondition como JsonIgnoreCondition.WhenWritingNull. |
SYSLIB0021 | Aviso | Os tipos criptográficos derivados são obsoletos. Em vez disso, use o Create método no tipo base. |
SYSLIB0022 | Aviso | Os Rijndael e RijndaelManaged tipos são obsoletos. Utilize Aes em substituição. |
SYSLIB0023 | Aviso | RNGCryptoServiceProvider está obsoleta. Para gerar um número aleatório, use um dos RandomNumberGenerator métodos estáticos. |
SYSLIB0024 | Aviso | A criação e descarregamento de AppDomains não é suportada e gera uma exceção. |
SYSLIB0025 | Aviso | SuppressIldasmAttribute não tem efeito no .NET 6+. |
SYSLIB0026 | Aviso | X509Certificate e X509Certificate2 são imutáveis. Use o construtor apropriado para criar um novo certificado. |
SYSLIB0027 | Aviso | PublicKey.Key está obsoleta. Use o método apropriado para obter a chave pública, como GetRSAPublicKey(). |
SYSLIB0028 | Aviso | X509Certificate2.PrivateKey está obsoleta. Use o método apropriado para obter a chave privada, como RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), ou use o X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) método para criar uma nova instância com uma chave privada. |
SYSLIB0029 | Aviso | ProduceLegacyHmacValues está obsoleta. A produção de valores HMAC herdados não é mais suportada. |
SYSLIB0030 | Aviso | HMACSHA1 utiliza sempre a implementação do algoritmo fornecido pela plataforma. Use um construtor sem o useManagedSha1 parâmetro. |
SYSLIB0031 | Aviso | CryptoConfig.EncodeOID(String) está obsoleta. Use a funcionalidade ASN.1 fornecida em System.Formats.Asn1. |
SYSLIB0032 | Aviso | Não há suporte para recuperação de exceções de estado de processo corrompido; HandleProcessCorruptedStateExceptionsAttribute é ignorada. |
SYSLIB0033 | Aviso | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) é obsoleta e não é suportada. Utilize PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) em substituição. |
SYSLIB0034 | Aviso | CmsSigner(CspParameters) está obsoleta. Use um construtor alternativo em vez disso. |
SYSLIB0035 | Aviso | SignerInfo.ComputeCounterSignature() está obsoleta. Use a sobrecarga que aceita um CmsSigner em vez disso. |
SYSLIB0036 | Aviso | Regex.CompileToAssembly está obsoleta e não é suportada. Em vez disso, use RegexGeneratorAttribute com o gerador de fonte de expressão regular. |
SYSLIB0037 | Aviso | AssemblyName membros HashAlgorithm, ProcessorArchitecturee VersionCompatibility são obsoletos e não suportados. |
SYSLIB0038 | Aviso | SerializationFormat.Binary é obsoleta e não deve ser utilizada. |
SYSLIB0039 | Aviso | As versões 1.0 e 1.1 do TLS têm vulnerabilidades conhecidas e não são recomendadas. Em vez disso, use uma versão mais recente do TLS ou use SslProtocols.None para adiar para os padrões do sistema operacional. |
SYSLIB0040 | Aviso | EncryptionPolicy.NoEncryption e EncryptionPolicy.AllowNoEncryption reduzir significativamente a segurança e não deve ser usado no código de produção. |
SYSLIB0041 | Aviso | O algoritmo de hash padrão e as contagens de iteração em Rfc2898DeriveBytes construtores estão desatualizados e inseguros. Use um construtor que aceite o algoritmo de hash e o número de iterações. |
SYSLIB0042 | Aviso | ToXmlString e FromXmlString não têm implementação para tipos de criptografia de curva elíptica (ECC) e são obsoletos. Use um formato padrão de importação e exportação, como ExportSubjectPublicKeyInfo ou ImportSubjectPublicKeyInfo para chaves públicas e ExportPkcs8PrivateKey /ou ImportPkcs8PrivateKey para chaves privadas. |
SYSLIB0043 | Aviso | ECDiffieHellmanPublicKey.ToByteArray() e o construtor associado não tem uma implementação consistente e interoperável em todas as plataformas. Utilize ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() em substituição. |
SYSLIB0044 | Aviso | AssemblyName.CodeBase e AssemblyName.EscapedCodeBase são obsoletas. Não há suporte para usá-los para carregar um assembly. |
SYSLIB0045 | Aviso | Os métodos criptográficos de fábrica que aceitam um nome de algoritmo são obsoletos. Em vez disso, use o método de fábrica sem Create parâmetros no tipo de algoritmo. |
SYSLIB0046 | Aviso | O ControlledExecution.Run(Action, CancellationToken) método pode corromper o processo e não deve ser usado no código de produção. |
SYSLIB0047 | Aviso | XmlSecureResolver está obsoleta. Em vez disso, use XmlResolver.ThrowingResolver ao tentar proibir a resolução de entidade externa XML. |
SYSLIB0048 | Aviso | RSA.EncryptValue(Byte[]) e RSA.DecryptValue(Byte[]) são obsoletas. Use RSA.Encrypt e RSA.Decrypt em vez disso. |
SYSLIB0049 | Aviso | JsonSerializerOptions.AddContext está obsoleto. Para registrar um JsonSerializerContext, use a propriedade TypeInfoResolver ou TypeInfoResolverChain. |
SYSLIB0050 | Aviso | A serialização baseada em Formatter é obsoleta e não deve ser usada. |
SYSLIB0051 | Aviso | As APIs que suportam a serialização obsoleta baseada em formatador estão obsoletas. Eles não devem ser chamados ou estendidos pelo código do aplicativo. |
SYSLIB0052 | Aviso | As APIs que suportam mecanismos obsoletos para extensibilidade Regex estão obsoletas. |
SYSLIB0053 | Aviso | AesGcm deve indicar o tamanho da etiqueta necessária para encriptação e desencriptação. Use um construtor que aceite o tamanho da tag. |
SYSLIB0054 | Aviso | Thread.VolatileRead e Thread.VolatileWrite são obsoletas. Use Volatile.Read ou Volatile.Write em vez disso. |
SYSLIB0055 | Aviso | AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* métodos com parâmetros assinados são obsoletos. Em vez disso, use as sobrecargas não assinadas. |
SYSLIB0056 | Aviso | Assembly.LoadFrom com um costume AssemblyHashAlgorithm é obsoleto. Use sobrecargas sem um AssemblyHashAlgorithm arquivo . |
SYSLIB0057 | Aviso | X509Certificate2 e X509Certificate construtores para conteúdo binário e de arquivo são obsoletos. |
Suprimir avisos
É recomendável usar uma solução alternativa disponível sempre que possível. No entanto, se você não pode alterar seu código, você pode suprimir avisos através de uma #pragma
diretiva ou uma <NoWarn>
configuração de projeto. Se você precisar usar as APIs obsoletas e o SYSLIB0XXX
diagnóstico não aparecer como um erro, você poderá suprimir o aviso no código ou no arquivo de projeto.
Para suprimir os avisos no código:
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Para suprimir os avisos em um arquivo de projeto:
<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
A supressão de avisos desta forma apenas desativa os avisos de obsolescência especificados. Ele não desativa nenhum outro aviso, incluindo avisos de obsolescência com diferentes IDs de diagnóstico.