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.
Ação recomendada
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
- System.Net.Security.EncryptionPolicy.AllowNoEncryption
- System.Net.Security.EncryptionPolicy.NoEncryption
SYSLIB0041
- Rfc2898DeriveBytes(String, Byte[])
- Rfc2898DeriveBytes(String, Int32)
- Rfc2898DeriveBytes(Byte[], Byte[], Int32)
- Rfc2898DeriveBytes(String, Byte[], Int32)
- Rfc2898DeriveBytes(String, Int32, Int32)
SYSLIB0042
- System.Security.Cryptography.ECDiffieHellmanCng.FromXmlString(String, ECKeyXmlFormat)
- System.Security.Cryptography.ECDiffieHellmanCng.ToXmlString(ECKeyXmlFormat)
- System.Security.Cryptography.ECDiffieHellmanCngPublicKey.FromXmlString(String)
- System.Security.Cryptography.ECDiffieHellmanCngPublicKey.ToXmlString()
- System.Security.Cryptography.ECDiffieHellmanPublicKey.ToXmlString()
- System.Security.Cryptography.ECDsaCng.FromXmlString(String, ECKeyXmlFormat)
- System.Security.Cryptography.ECDsaCng.ToXmlString(ECKeyXmlFormat)
SYSLIB0043
- System.Security.Cryptography.ECDiffieHellmanPublicKey.ToByteArray()
- ECDiffieHellmanPublicKey(Byte[])
SYSLIB0045
- System.Security.Cryptography.Aes.Create(String)
- System.Security.Cryptography.AsymmetricAlgorithm.Create(String)
- System.Security.Cryptography.DES.Create(String)
- System.Security.Cryptography.ECDiffieHellman.Create(String)
- System.Security.Cryptography.ECDsa.Create(String)
- System.Security.Cryptography.HashAlgorithm.Create(String)
- System.Security.Cryptography.KeyedHashAlgorithm.Create(String)
- System.Security.Cryptography.RandomNumberGenerator.Create(String)
- System.Security.Cryptography.RC2.Create(String)
- System.Security.Cryptography.Rijndael.Create(String)
- System.Security.Cryptography.RSA.Create(String)
- System.Security.Cryptography.SHA1.Create(String)
- System.Security.Cryptography.SHA256.Create(String)
- System.Security.Cryptography.SHA384.Create(String)
- System.Security.Cryptography.SHA512.Create(String)
- System.Security.Cryptography.SymmetricAlgorithm.Create(String)
- System.Security.Cryptography.TripleDES.Create(String)