Recursos obsoletos no .NET 5+
A partir do .NET 5, algumas APIs recentemente marcadas como obsoletas fazem uso de duas novas propriedades em ObsoleteAttribute.
A propriedade ObsoleteAttribute.DiagnosticId informa ao compilador para gerar avisos de compilação usando um ID de diagnóstico personalizado. A ID personalizada permite que o aviso de obsolescência seja suprimido especificamente e separadamente um do outro. No caso de obsoletos do .NET 5+, o formato do ID de diagnóstico personalizado é
SYSLIB0XXX
.A propriedade ObsoleteAttribute.UrlFormat informa 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 o ID de diagnóstico listado na seção Referência. Avisos ou erros para essas obsoletas não podem ser suprimidos usando o ID de diagnóstico padrão (CS0618) para tipos ou membros obsoletos; em vez disso, use os valores de ID de diagnóstico SYSLIB0XXX
personalizados. Para obter mais informações, consulte Suprimir avisos.
Referência
A tabela a seguir fornece um índice para as obsoletas SYSLIB0XXX
no .NET 5+.
ID do diagnóstico | Aviso ou erro | Descrição |
---|---|---|
SYSLIB0001 | Aviso | A codificação UTF-7 não é segura e não deve ser usada. Em vez disso, considere usar a UTF-8. |
SYSLIB0002 | Erro | PrincipalPermissionAttribute não é corroborado pelo runtime e não deve ser usado. |
SYSLIB0003 | Aviso | A CAS (segurança de acesso do código) não tem suporte nem é corroborada pelo runtime. |
SYSLIB0004 | Aviso | Não há suporte para o recurso CER (região de execução restrita). |
SYSLIB0005 | Aviso | Não há suporte para GAC (cache de assembly global). |
SYSLIB0006 | Aviso | Thread.Abort() não é compatível e lança PlatformNotSupportedException. |
SYSLIB0007 | Aviso | Não há suporte para a implementação padrão desse algoritmo de criptografia. |
SYSLIB0008 | Aviso | A API CreatePdbGenerator() não é compatível e lança PlatformNotSupportedException. |
SYSLIB0009 | Aviso | Não há suporte para AuthenticationManager. Os métodos não realizarão nenhuma operação ou lançarão PlatformNotSupportedException. |
SYSLIB0010 | Aviso | Algumas APIs de comunicação remota não são compatíveis e lançam PlatformNotSupportedException. |
SYSLIB0011 | Aviso | A serialização de BinaryFormatter está obsoleta e não deve ser usada. |
SYSLIB0012 | Aviso | Assembly.CodeBase e Assembly.EscapedCodeBase são incluídos apenas para compatibilidade com o .NET Framework. Use Assembly.Location em vez disso. |
SYSLIB0013 | Aviso | Uri.EscapeUriString(String) pode corromper a cadeia de caracteres de URI em alguns casos. Em vez disso, considere usar Uri.EscapeDataString(String) para os componentes da cadeia de caracteres de consulta. |
SYSLIB0014 | Aviso | WebRequest, HttpWebRequest, ServicePoint e WebClient estão obsoletos. Use HttpClient em vez disso. |
SYSLIB0015 | Aviso | DisablePrivateReflectionAttribute não tem efeito no .NET 6+. |
SYSLIB0016 | Aviso | Para melhor desempenho e menos alocações, use as sobrecargas de Graphics.GetContextInfo que aceitam argumentos. |
SYSLIB0017 | Aviso | A assinatura de nome forte não é compatível e lança PlatformNotSupportedException. |
SYSLIB0018 | Aviso | O carregamento somente por reflexão não é compatível e lança PlatformNotSupportedException. |
SYSLIB0019 | Aviso | 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. |
SYSLIB0020 | Aviso | JsonSerializerOptions.IgnoreNullValues é obsoleto. Para ignorar valores nulos ao serializar, defina DefaultIgnoreCondition como JsonIgnoreCondition.WhenWritingNull. |
SYSLIB0021 | Aviso | Os tipos criptográficos derivados são obsoletos. Em vez disso, use o método Create no tipo base. |
SYSLIB0022 | Aviso | Os tipos Rijndael e RijndaelManaged estão obsoletos. Use Aes em vez disso. |
SYSLIB0023 | Aviso | RNGCryptoServiceProvider é obsoleto. Para gerar um número aleatório, em vez disso use um dos métodos estáticos de RandomNumberGenerator. |
SYSLIB0024 | Aviso | Criar e descarregar AppDomains não é compatível e lança 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 certificado. |
SYSLIB0027 | Aviso | PublicKey.Key é obsoleto. Use o método apropriado para obter a chave pública, como GetRSAPublicKey(). |
SYSLIB0028 | Aviso | 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. |
SYSLIB0029 | Aviso | ProduceLegacyHmacValues é obsoleto. Não há mais suporte para a produção de valores HMAC herdados. |
SYSLIB0030 | Aviso | HMACSHA1 sempre usa a implementação de algoritmos fornecida pela plataforma. Use um construtor sem o parâmetro useManagedSha1 . |
SYSLIB0031 | Aviso | CryptoConfig.EncodeOID(String) é obsoleto. Use a funcionalidade ASN.1 fornecida em System.Formats.Asn1. |
SYSLIB0032 | Aviso | Não há suporte para a recuperação de exceções de estado de processo corrompido; HandleProcessCorruptedStateExceptionsAttribute é ignorado. |
SYSLIB0033 | Aviso | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) é obsoleto e não compatível. Use PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) em vez disso. |
SYSLIB0034 | Aviso | CmsSigner(CspParameters) é obsoleto. Em vez disso, use um construtor alternativo. |
SYSLIB0035 | Aviso | SignerInfo.ComputeCounterSignature() é obsoleto. Em vez disso, use a sobrecarga que aceita um CmsSigner. |
SYSLIB0036 | Aviso | Regex.CompileToAssembly é obsoleto e não conta com suporte. Use RegexGeneratorAttribute com o gerador de origem de expressão regular. |
SYSLIB0037 | Aviso | AssemblyName membros HashAlgorithm, ProcessorArchitecture e VersionCompatibility são obsoletos e não são suportados. |
SYSLIB0038 | Aviso | SerializationFormat.Binary está obsoleto e não deve ser usado. |
SYSLIB0039 | Aviso | As versões 1.0 e 1.1 do TLS têm vulnerabilidades conhecidas e não são recomendadas. Use uma versão mais recente do TLS ou use SslProtocols.None para adiar os padrões do sistema operacional. |
SYSLIB0040 | Aviso | EncryptionPolicy.NoEncryption e EncryptionPolicy.AllowNoEncryption reduzem significativamente a segurança e não devem ser usados em código de produção. |
SYSLIB0041 | Aviso | As contagens padrão de algoritmo de hash e iteração em construtores Rfc2898DeriveBytes estão desatualizadas e não são seguras. 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 uma implementação para tipos ECC (criptografia de curva elíptica) 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 têm uma implementação consistente e interoperável em todas as plataformas. Use ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() em vez disso. |
SYSLIB0044 | Aviso | AssemblyName.CodeBase e AssemblyName.EscapedCodeBase estão obsoletos. Não há suporte ao uso deles para carregar um assembly. |
SYSLIB0045 | Aviso | Métodos de fábrica criptográficos que aceitam um nome de algoritmo estão obsoletos. Em vez deles, use o método de fábrica Create sem parâmetros no tipo de algoritmo. |
SYSLIB0046 | Aviso | O método ControlledExecution.Run(Action, CancellationToken) pode corromper o processo e não deve ser usado no código de produção. |
SYSLIB0047 | Aviso | XmlSecureResolver é obsoleto. Use XmlResolver.ThrowingResolver ao tentar proibir a resolução de entidade externa XML. |
SYSLIB0048 | Aviso | RSA.EncryptValue(Byte[]) e RSA.DecryptValue(Byte[]) estão obsoletos. Em vez disso, use RSA.Encrypt e RSA.Decrypt. |
SYSLIB0049 | Aviso | JsonSerializerOptions.AddContext está obsoleto. Para registrar um JsonSerializerContext, use a propriedade TypeInfoResolver ou TypeInfoResolverChain. |
SYSLIB0050 | Aviso | A serialização baseada em formatador está obsoleta e não deve ser usada. |
SYSLIB0051 | Aviso | APIs que dão suporte à serialização baseada em formatador obsoleta são obsoletas. Elas não devem ser chamadas nem estendidas pelo código do aplicativo. |
SYSLIB0052 | Aviso | AS APIs que dão suporte a mecanismos obsoletos para a extensibilidade do regex são obsoletas. |
SYSLIB0053 | Aviso | AesGcm deve indicar o tamanho da marca necessária para criptografia e descriptografia. Use um construtor que aceite o tamanho da marca. |
SYSLIB0054 | Aviso | Thread.VolatileRead e Thread.VolatileWrite estão obsoletos. Em vez disso, use Volatile.Read ou Volatile.Write. |
SYSLIB0055 | Aviso | AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* métodos com parâmetros assinados estão obsoletos. Use as sobrecargas não assinadas em vez disso. |
SYSLIB0056 | Aviso | Assembly.LoadFrom com uma personalização AssemblyHashAlgorithm é obsoleta. Use sobrecargas sem um AssemblyHashAlgorithm . |
SYSLIB0057 | Aviso | Os construtores X509Certificate2 e X509Certificate para conteúdo binário e de arquivo estão obsoletos. |
Suprimir avisos
É recomendável usar uma solução alternativa disponível sempre que possível. No entanto, se você não puder alterar seu código, poderá suprimir os avisos por meio de uma diretiva #pragma
ou de uma configuração de projeto <NoWarn>
. Se você precisar usar as APIs obsoletas e o diagnóstico SYSLIB0XXX
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, faça o seguinte:
// 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, faça o seguinte:
<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>
Observação
A supressão de avisos dessa maneira desativa apenas os avisos de obsolescência que você especificar. Ele não desabilita nenhum outro aviso, incluindo avisos de obsolescência com diferentes IDs de diagnóstico.