Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 das obsoletizações do
System*namespace, o formato do ID de diagnóstico personalizado éSYSLIB0XXX. No caso dasMicrosoft.Extensionsobsolescências, o formato da ID de diagnóstico personalizada éEXTOBS0XXX. - A propriedade ObsoleteAttribute.UrlFormat informa ao compilador para incluir um link de URL para saber mais sobre a obsolescência.
Se você encontrar avisos de build ou erros devido ao uso de uma API obsoleta, siga as diretrizes específicas fornecidas para a ID de diagnóstico listada nas tabelas de referência a seguir. Avisos ou erros para essas obsolescências não podem ser suprimidos usando o identificador de diagnóstico padrão (CS0618) para tipos ou membros obsoletos; use os valores de identificador de diagnóstico personalizados SYSLIB0XXX ou EXTOBS0XXX em vez disso. Para obter mais informações, consulte Suprimir avisos.
As tabelas a seguir fornecem um índice para APIs obsoletas com IDs de diagnóstico personalizadas no .NET 5 e versões posteriores:
Obsolescências SYSLIB
A tabela a seguir lista as obsolescências 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. |
| SYSLIB0058 | Aviso | As propriedades KeyExchangeAlgorithm, KeyExchangeStrength, CipherAlgorithm, CipherAlgorithmStrength, HashAlgorithme HashStrength de SslStream são obsoletas. Use NegotiatedCipherSuite em vez disso. |
| SYSLIB0059 | Aviso | Retornos de chamada SystemEvents.EventsThreadShutdown não são executados antes de o processo ser encerrado. Use AppDomain.ProcessExit em vez disso. |
| SYSLIB0060 | Aviso | Os construtores em System.Security.Cryptography.Rfc2898DeriveBytes estão obsoletos. Use Rfc2898DeriveBytes.Pbkdf2 em vez disso. |
| SYSLIB0061 | Aviso | O QueryableQueryable.MaxBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TSource>) e Queryable.MinBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TSource>) tomar um IComparer<TSource> são obsoletos. Use os novos que usam um IComparer<TKey>. |
| SYSLIB0062 | Aviso | XsltSettings.EnableScript é obsoleto. |
Obsolescências do EXTOBS
A tabela a seguir lista as EXTOBS0XXX obsolescências das Microsoft.Extensions bibliotecas.
| ID do diagnóstico | Aviso ou erro | Descrição |
|---|---|---|
| EXTOBS0001 | Aviso | IResourceMonitor é obsoleto e será removido em uma versão futura. Considere o uso de instrumentos observáveis do Monitoramento de Recursos. |
| EXTOBS0002 | Aviso | Os AddServiceLogEnricher métodos de extensão foram marcados como obsoletos a partir do pacote versão 10.1.0. Os métodos enriquecem os logs de aplicativos, não os logs de serviço, portanto, eles foram substituídos por métodos nomeados AddApplicationLogEnricher corretamente. |
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 avisos por meio de uma #pragma diretiva ou uma <NoWarn> configuração de projeto. Se você precisar usar as APIs obsoletas e um diagnóstico SYSLIB0XXX ou EXTOBS0XXX não surgir como um erro, é possível ignorar 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.