Rozhraní API silného názvu vyvolává výjimku PlatformNotSupportedException

Několik rozhraní API , která nejsou podporována v .NET/.NET Core, ale při změně přístupu se nic nepovedlo, aby se teď spustila PlatformNotSupportedException za běhu. Dříve použití těchto rozhraní API nakonec vedlo k další výjimce za běhu; Výjimka je nyní vyvolána při vytvoření instance typu nebo při prvním přístupu.

Předchozí chování

V předchozích verzích bylo volání AssemblyName.KeyPair nebo StrongNameKeyPair(Byte[]) operace typu no-op. Volání StrongNameKeyPair(FileStream) číst datový proud, ale jinak nic neudělalo.

Nové chování

Počínaje rozhraním .NET 6 se každé ze tří ovlivněných rozhraní API vyvolá PlatformNotSupportedException za běhu.

Zavedená verze

.NET 6

Typ zásadní změny

Tato změna může ovlivnit binární kompatibilitu.

Důvod změny

Dříve aplikace, která volala zkompilované a spuštěné rozhraní API, ale jakmile byla instance použita v jakékoli cestě kódu, vyvolala výjimku za běhu. Aby bylo explicitnější, že tento scénář není podporován, byla logika vyvolání výjimek přesunuta do konstruktoru instance. V případě, že nejsou vytvořeny žádné instance, je výjimka vyvolán také ve veřejných vstupních bodech, které vracejí tento typ, to znamená AssemblyName.KeyPair.

Podepisování silného názvu se v .NET/.NET Core nepodporuje a neexistuje žádné alternativní řešení.

Poznámka:

.NET Core/5+ nikdy nekontroluje podpisy v jeho modulu runtime. Pokud ale cílíte na knihovny pro různé platformy (například základní ověřovací balíček, který cílí na .NET Standard 2.0, takže běží i v rozhraní .NET Framework), je vhodné vytvořit silné pojmenování pro kompatibilitu mezi moduly runtime. Rozhraní .NET Framework nadále vynucuje silné pojmenování, pokud je volající aplikace se silným názvem. Sestavení se silným názvem můžete použít ve všech verzích rozhraní .NET pomocí nástroje Sn.exe . Další informace naleznete v tématu Podepisování silného názvu.

Ovlivněná rozhraní API

Viz také