Obsolações 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 de quebra é específica para APIs que foram marcadas como obsoletas com uma ID de diagnóstico personalizada. Suprimir a 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.
Alterar a descrição
Em versões anteriores do .NET, essas APIs podem ser usadas sem qualquer aviso de compilação. No .NET 7 e versões posteriores, o uso dessas APIs produz um aviso ou erro em tempo de compilação com uma ID de diagnóstico personalizada. O uso de IDs de diagnóstico personalizados permite suprimir os avisos de obsolescência individualmente, em vez de suprimir todos os avisos de obsolescência.
A tabela a seguir lista as IDs de diagnóstico personalizadas e suas mensagens de aviso correspondentes para APIs obsoletas.
ID de diagnóstico | Description | Gravidade |
---|---|---|
SYSLIB0036 | Regex.CompileToAssembly está obsoleta e não é suportada. Em vez disso, use RegexGeneratorAttribute com o gerador de fonte de expressão regular. |
Aviso |
SYSLIB0037 | AssemblyName membros HashAlgorithm, ProcessorArchitecturee VersionCompatibility são obsoletos e não suportados. | Aviso |
SYSLIB0038 | SerializationFormat.Binary é obsoleta e não deve ser utilizada. | Aviso |
SYSLIB0039 | 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. | Aviso |
SYSLIB0040 | EncryptionPolicy.NoEncryption e EncryptionPolicy.AllowNoEncryption reduzir significativamente a segurança e não deve ser usado no código de produção. | Aviso |
SYSLIB0041 | 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. | Aviso |
SYSLIB0042 | 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. |
Aviso |
SYSLIB0043 | 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. | Aviso |
SYSLIB0044 | AssemblyName.CodeBase e AssemblyName.EscapedCodeBase são obsoletas. | Aviso |
SYSLIB0045 | 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. |
Aviso |
SYSLIB0047 | XmlSecureResolver está obsoleta. Em vez disso, use XmlResolver.ThrowingResolver para proibir a resolução de recursos XML externos. |
Aviso |
Versão introduzida
.NET 7
Tipo de mudança de rutura
Essas obsolações podem afetar a compatibilidade da fonte.
Ação recomendada
Siga as orientações específicas fornecidas para cada ID de diagnóstico usando o link de URL fornecido no aviso.
Avisos ou erros para essas obsolescências não podem ser suprimidos usando o ID de diagnóstico padrão para tipos ou membros obsoletos; em vez disso, use o valor de ID de diagnóstico personalizado
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)