Compartilhar via


Obsolescências de API com IDs de diagnóstico não padrão (.NET 7)

Algumas APIs foram marcadas como obsoletas, começando no .NET 7. 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 podiam ser usadas sem nenhum aviso de build. No .NET 7 e em versões posteriores, o uso dessas APIs produz um aviso ou um erro em 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
SYSLIB0036 Regex.CompileToAssembly é obsoleto e não conta com suporte. Use RegexGeneratorAttribute com o gerador de origem de expressão regular. Aviso
SYSLIB0037 Os membros HashAlgorithm, ProcessorArchitecture e VersionCompatibility de AssemblyName ficaram obsoletos e não contam com suporte. Aviso
SYSLIB0038 SerializationFormat.Binary está obsoleto e não deve ser usado. Aviso
SYSLIB0039 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. Aviso
SYSLIB0040 EncryptionPolicy.NoEncryption e EncryptionPolicy.AllowNoEncryption reduzem significativamente a segurança e não devem ser usados em código de produção. Aviso
SYSLIB0041 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. Aviso
SYSLIB0042 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. Aviso
SYSLIB0043 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. Aviso
SYSLIB0044 AssemblyName.CodeBase e AssemblyName.EscapedCodeBase estão obsoletos. Aviso
SYSLIB0045 Métodos de fábrica criptográficos que aceitam um nome de algoritmo são obsoletos. Em vez disso, use o método de fábrica Create sem parâmetros no tipo de algoritmo. Aviso
SYSLIB0047 XmlSecureResolver é obsoleto. Em vez disso, use XmlResolver.ThrowingResolver para proibir a resolução de recursos XML externos. Aviso

Versão introduzida

.NET 7

Tipo de alteração interruptiva

Essas itens obsoletos podem afetar a compatibilidade com a origem.

  • 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

SYSLIB0036

SYSLIB0037

SYSLIB0038

SYSLIB0039

SYSLIB0040

SYSLIB0041

SYSLIB0042

SYSLIB0043

SYSLIB0045

SYSLIB0047

Confira também