Udostępnij przez


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

Kilka interfejsów API, które nie są obsługiwane na platformie .NET/.NET Core i nic nie robiły, gdy uzyskiwano do nich dostęp, zostało zmienionych tak, aby teraz rzucały wyjątek w czasie wykonywania. Wcześniej użycie tych interfejsów API ostatecznie powodowało wyjątek środowiska uruchomieniowego w późniejszym czasie; teraz wyjątek jest zgłaszany, gdy typ jest instancjonowany lub po jego pierwszym dostępie.

Poprzednie zachowanie

W poprzednich wersjach wywołanie AssemblyName.KeyPair lub StrongNameKeyPair(Byte[]) było zjawiskiem związanym z no-op. Wywołanie StrongNameKeyPair(FileStream) odczytało strumień, ale poza tym nie wykonało żadnej innej akcji.

Nowe zachowanie

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

Wersja wprowadzona

.NET 6

Typ zmiany przełamującej

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

Przyczyna zmiany

Wcześniej aplikacja, która wywołała interfejs API, skompilowała się i uruchomiła, ale gdy tylko instancja została użyta w dowolnej ścieżce kodu, zgłaszała wyjątek w czasie wykonywania programu. Aby bardziej wyraźnie zaznaczyć, że ten scenariusz jest nieobsługiwany, logika zgłaszania wyjątków została przeniesiona do konstruktora instancji. 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.

Sygnowanie mocną nazwą nie jest obsługiwane na platformie .NET/.NET Core i nie ma sposobu obejścia.

Uwaga / Notatka

Platforma .NET Core/5+ nigdy nie sprawdza podpisów w swoim środowisku uruchomieniowym. Jeśli jednak celem są biblioteki cross-platformowe (na przykład podstawowy pakiet uwierzytelniania przeznaczony dla .NET Standard 2.0, dzięki czemu działa on również na .NET Framework), silne nazewnictwo jest dobrym pomysłem dla zgodności między środowiskami uruchomieniowymi. Program .NET Framework nadal wymusza silne nazewnictwo, jeśli aplikacja wywołująca ma silną nazwę. Zestawy można oznaczać silną nazwą we wszystkich wersjach platformy .NET przy użyciu narzędzia Sn.exe. Aby uzyskać więcej informacji, zobacz Podpisywanie mocnej nazwy.

Interfejsy API, których dotyczy problem

Zobacz także

  • Jak podpisać zestaw przy użyciu silnej nazwy