Udostępnij przez


Przestarzałości interfejsu API z niedomyś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 z niestandardowym identyfikatorem diagnostycznym. Ignorowanie domyślnego identyfikatora diagnostycznego przestarzałości, jakim jest CS0618 w kompilatorze C#, nie ignoruje ostrzeżeń generowanych przez kompilator podczas używania tych interfejsów API.

Zmień opis

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 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 przestarzałości indywidualnie, zamiast pomijania wszystkich takich ostrzeżeń.

W poniższej tabeli wymieniono niestandardowe identyfikatory diagnostyczne i odpowiadające im komunikaty ostrzegawcze dla przestarzałych interfejsów API.

Identyfikator diagnostyczny Opis Ciężkość
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 członkowie HashAlgorithm, ProcessorArchitecture, i VersionCompatibility są przestarzali i nie są obsługiwani. 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 i EncryptionPolicy.AllowNoEncryption znacznie zmniejszają bezpieczeństwo i 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() i powiązany konstruktor nie ma spójnej i współdziałającej implementacji na wszystkich platformach. Użyj ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() zamiast tego. Ostrzeżenie
SYSLIB0044 AssemblyName.CodeBase i AssemblyName.EscapedCodeBase są przestarzałe. Ostrzeżenie
SYSLIB0045 Metody fabryczne kryptograficzne akceptujące nazwę algorytmu są przestarzałe. Zamiast tego użyj metody fabryki bezparametrowej Create na typie algorytmu. Ostrzeżenie
SYSLIB0047 XmlSecureResolver jest przestarzałe. Użyj XmlResolver.ThrowingResolver zamiast, aby zabronić rozpoznawania zewnętrznych zasobów XML. Ostrzeżenie

Wersja wprowadzona

.NET 7

Typ zmiany przełamującej

Te przestarzałości mogą mieć wpływ na zgodność źródła .

  • 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 wartości identyfikatora diagnostycznego SYSLIBxxxx.

Interfejsy API, których dotyczy problem

SYSLIB0036

SYSLIB0037

SYSLIB0038

SYSLIB0039

SYSLIB0040

SYSLIB0041

SYSLIB0042

SYSLIB0043

SYSLIB0045

SYSLIB0047

Zobacz także