Udostępnij za pośrednictwem


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.

  • 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

SYSLIB0041

SYSLIB0042

SYSLIB0043

SYSLIB0045

SYSLIB0047

Zobacz też