Поделиться через


API строгого имени вызывают PlatformNotSupportedException

Несколько API , которые не поддерживаются в .NET/.NET Core, но не сделали ничего, когда доступ был изменен, чтобы теперь вызвать вызов PlatformNotSupportedException во время выполнения. Ранее использование этих API в конечном итоге приведет к исключению во время выполнения дальше; Исключение теперь возникает при создании экземпляра или первом доступе к типу.

Прежнее поведение

В предыдущих версиях вызов AssemblyName.KeyPair или StrongNameKeyPair(Byte[]) отсутствие операции. Вызов StrongNameKeyPair(FileStream) потока чтения, но в противном случае ничего не сделал.

Новое поведение

Начиная с .NET 6 каждый из трех затронутых API вызывает PlatformNotSupportedException исключение во время выполнения.

Представленные версии

.NET 6

Тип критического изменения

Это изменение может повлиять на совместимость двоичного кода.

Причина изменения

Ранее приложение, вызывающее скомпилированный и запущенный API, но как только экземпляр использовался в любом пути кода, он вызвал исключение во время выполнения. Чтобы сделать его более явным, что этот сценарий не поддерживается, логика создания исключений была перемещена в конструктор экземпляра. Если экземпляры не создаются, исключение также создается в общедоступных точках входа, возвращающих этот тип, то есть AssemblyName.KeyPair.

Подписывание строгого имени не поддерживается в .NET/.NET Core, и обходной путь отсутствует.

Примечание.

.NET Core/5+ никогда не проверка подписей в среде выполнения. Однако если вы нацелены на кроссплатформенные библиотеки (например, базовый пакет проверки подлинности, предназначенный для .NET Standard 2.0, поэтому он работает на платформа .NET Framework тоже), то строгое именование — это хорошая идея для совместимости между средами выполнения. платформа .NET Framework продолжает применять строгое именование, если вызывающее приложение имеет строгое имя. Сборки строгого имени можно использовать во всех версиях .NET с помощью средства Sn.exe . Дополнительные сведения см. в разделе "Строгий подписывание имен".

Затронутые API

См. также