Interfejsy API o silnej nazwie zgłaszają wyjątek PlatformNotSupportedException

Kilka interfejsów API, które nie są obsługiwane na platformie .NET/.NET Core, ale nie zrobiły nic, gdy dostęp został zmieniony, aby teraz zgłaszać PlatformNotSupportedException w czasie wykonywania. Wcześniej użycie tych interfejsów API ostatecznie spowodowałoby dalsze wyjątek czasu wykonywania; wyjątek jest teraz zgłaszany po utworzeniu wystąpienia lub pierwszym wystąpieniu typu.

Poprzednie zachowanie

W poprzednich wersjach wywoływanie AssemblyName.KeyPair lub StrongNameKeyPair(Byte[]) brak operacji. Wywołanie odczytu StrongNameKeyPair(FileStream) strumienia, ale w przeciwnym razie nie zrobiło nic.

Nowe zachowanie

Począwszy od platformy .NET 6, każdy z trzech dotkniętych interfejsów API zgłasza błąd PlatformNotSupportedException w czasie wykonywania.

Wprowadzona wersja

.NET 6

Typ zmiany powodującej niezgodność

Ta zmiana może mieć wpływ na zgodność binarną.

Przyczyna wprowadzenia zmiany

Wcześniej aplikacja, która nazwała interfejs API skompilowana i uruchomiona, ale gdy tylko wystąpienie zostało użyte w dowolnej ścieżce kodu, zgłosiło wyjątek czasu wykonywania. Aby uczynić go bardziej wyraźnym, że ten scenariusz jest nieobsługiwany, logika zgłaszania wyjątków została przeniesiona do konstruktora wystąpienia. W przypadku, gdy nie są tworzone żadne wystąpienia, wyjątek jest również zgłaszany w publicznych punktach wejścia, które zwracają ten typ, czyli AssemblyName.KeyPair.

Podpisywanie silnej nazwy nie jest obsługiwane na platformie .NET/.NET Core i nie ma obejścia.

Uwaga

Platforma .NET Core/5+ nigdy nie sprawdza podpisów w swoim środowisku uruchomieniowym. Jeśli jednak używasz bibliotek międzyplatformowych (na przykład podstawowego pakietu uwierzytelniania przeznaczonego dla platformy .NET Standard 2.0, więc działa on również na platformie .NET Framework), dobrym pomysłem jest zgodność z wieloma środowiskami uruchomieniowym. Program .NET Framework nadal wymusza silne nazewnictwo, jeśli aplikacja wywołująca ma silną nazwę. Zestawy o silnej nazwie można nazwać we wszystkich wersjach platformy .NET przy użyciu narzędzia Sn.exe . Aby uzyskać więcej informacji, zobacz Podpisywanie silnej nazwy.

Dotyczy interfejsów API

Zobacz też