Obsoletions interfejsu API z nie domyślnymi identyfikatorami diagnostycznymi (.NET 7)
Niektóre interfejsy API zostały oznaczone jako przestarzałe, począwszy od platformy .NET 7. Ta zmiana powodująca niezgodność jest specyficzna dla interfejsów API, które zostały oznaczone jako przestarzałe przy użyciu niestandardowego identyfikatora diagnostycznego. Pomijanie domyślnego identyfikatora diagnostycznego obsoletion, który jest CS0618 dla kompilatora języka C#, nie pomija ostrzeżeń generowanych przez kompilator podczas użycia tych interfejsów API.
Opis zmiany
W poprzednich wersjach platformy .NET te interfejsy API mogą być używane bez żadnego ostrzeżenia dotyczącego kompilacji. W wersjach .NET 7 i nowszych użycie tych interfejsów API powoduje wygenerowanie ostrzeżenia w czasie kompilacji lub błędu z niestandardowym identyfikatorem diagnostycznym. Użycie niestandardowych identyfikatorów diagnostycznych umożliwia pomijanie ostrzeżeń dotyczących obsoletion indywidualnie zamiast pomijania wszystkich ostrzeżeń dotyczących obsoletionu.
W poniższej tabeli wymieniono niestandardowe identyfikatory diagnostyczne i odpowiadające im komunikaty ostrzegawcze dla przestarzałych interfejsów API.
Identyfikator diagnostyczny | opis | Waga błędu |
---|---|---|
SYSLIB0036 | Regex.CompileToAssembly jest przestarzały i nie jest obsługiwany. Zamiast tego należy używać RegexGeneratorAttribute z generatorem źródła wyrażeń regularnych. |
Ostrzeżenie |
SYSLIB0037 | AssemblyName elementy członkowskie HashAlgorithm, ProcessorArchitecturei VersionCompatibility są przestarzałe i nie są obsługiwane. | Ostrzeżenie |
SYSLIB0038 | SerializationFormat.Binary jest przestarzały i nie powinien być używany. | Ostrzeżenie |
SYSLIB0039 | Protokoły TLS w wersji 1.0 i 1.1 mają znane luki w zabezpieczeniach i nie są zalecane. Zamiast tego użyj nowszej wersji protokołu TLS lub użyj polecenia SslProtocols.None , aby odroczyć wartości domyślne systemu operacyjnego. | Ostrzeżenie |
SYSLIB0040 | EncryptionPolicy.NoEncryption oraz znacznie zmniejszyć bezpieczeństwo i EncryptionPolicy.AllowNoEncryption nie należy ich używać w kodzie produkcyjnym. | Ostrzeżenie |
SYSLIB0041 | Domyślny algorytm skrótu i liczba iteracji w Rfc2898DeriveBytes konstruktorach są nieaktualne i niezabezpieczone. Użyj konstruktora, który akceptuje algorytm skrótu i liczbę iteracji. | Ostrzeżenie |
SYSLIB0042 | ToXmlString i FromXmlString nie mają implementacji typów kryptograficznych krzywej eliptycznej (ECC) i są przestarzałe. Użyj standardowego formatu importu i eksportu, takiego jak ExportSubjectPublicKeyInfo lub ImportSubjectPublicKeyInfo dla kluczy publicznych oraz ExportPkcs8PrivateKey dla ImportPkcs8PrivateKey kluczy prywatnych. |
Ostrzeżenie |
SYSLIB0043 | ECDiffieHellmanPublicKey.ToByteArray() a skojarzony konstruktor nie ma spójnej i współdziałania implementacji na wszystkich platformach. Użycie w zamian parametru ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo(). | Ostrzeżenie |
SYSLIB0044 | AssemblyName.CodeBase i AssemblyName.EscapedCodeBase są przestarzałe. | Ostrzeżenie |
SYSLIB0045 | Metody fabryki kryptograficznych akceptujące nazwę algorytmu są przestarzałe. Zamiast tego użyj metody fabryki bez Create parametrów w typie algorytmu. |
Ostrzeżenie |
SYSLIB0047 | XmlSecureResolver jest przestarzały. Zamiast tego należy XmlResolver.ThrowingResolver zabronić rozpoznawania zewnętrznych zasobów XML. |
Ostrzeżenie |
Wprowadzona wersja
.NET 7
Typ zmiany powodującej niezgodność
Te obsoletions mogą mieć wpływ na zgodność źródła.
Zalecana akcja
Postępuj zgodnie z określonymi wskazówkami podanymi dla każdego identyfikatora diagnostycznego przy użyciu linku adresu URL podanego w ostrzeżeniu.
Ostrzeżenia lub błędy dla tych obsoletions nie mogą być pomijane przy użyciu standardowego identyfikatora diagnostycznego dla przestarzałych typów lub elementów członkowskich; Zamiast tego użyj niestandardowej
SYSLIBxxxx
wartości identyfikatora diagnostycznego.
Dotyczy interfejsów API
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)