Partilhar via


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

Consulte também