Les API de nom fort lèvent l’exception PlatformNotSupportedException

Quelques API qui ne sont pas prises en charge dans .NET/.NET Core, mais qui n’ont rien fait lors de l’accès ont été modifiées pour lever un PlatformNotSupportedException au moment de l’exécution. Auparavant, l’utilisation de ces API finissait par entraîner une exception à l’exécution plus loin. L’exception est maintenant levée lorsque le type est instancié ou consulté pour la première fois.

Comportement précédent

Dans les versions précédentes, l’appel de AssemblyName.KeyPair ou StrongNameKeyPair(Byte[]) était une absence d’opération. L’appel de StrongNameKeyPair(FileStream) a lu le flux, mais n’a rien fait d’autre.

Nouveau comportement

À compter de .NET 6, chacune des trois API affectées lève une PlatformNotSupportedException au moment de l’exécution.

Version introduite

.NET 6

Type de changement cassant

Ce changement peut affecter la compatibilité binaire.

Raison du changement

Auparavant, une application qui appelait l’API était compilée et exécutée, mais dès que l’instance était utilisée dans n’importe quel chemin de code, elle lançait une exception à l’exécution. Pour qu’il soit plus explicite que ce scénario n’est pas pris en charge, la logique de levée d’exception a été déplacée dans le constructeur d’instances. Si aucune instance n’est créée, l’exception est également levée dans des points d’entrée publics qui retournent ce type, autrement dit, AssemblyName.KeyPair.

La signature de nom fort n’est pas prise en charge dans .NET/.NET Core et il n’existe aucune solution de contournement.

Notes

.NET Core/5+ ne vérifie jamais les signatures dans son runtime. Toutefois, si vous ciblez des bibliothèques multiplateformes (par exemple, un package d’authentification de base qui cible .NET Standard 2.0, afin qu’il s’exécute également sur .NET Framework), l’utilisation de noms forts est une bonne idée pour la compatibilité entre les runtimes. .NET Framework continue d’utiliser des noms forts si l’application appelante porte un nom fort. Vous pouvez utiliser les assemblies de noms forts dans toutes les versions de .NET à l’aide de l’outil Sn.exe. Pour plus d’informations, consultez Signature de nom fort.

API affectées

Voir aussi