Api's met sterke naam gooien PlatformNotSupportedException
Een aantal API's die niet worden ondersteund in .NET/.NET Core, maar die niets hebben gedaan toen de toegang werd geopend, zijn gewijzigd om nu een PlatformNotSupportedException runtime te gooien. Voorheen zou het gebruik van deze API's uiteindelijk leiden tot een runtime-uitzondering verder; de uitzondering wordt nu gegenereerd wanneer het type wordt geïnstantieerd of voor het eerst wordt geopend.
Vorig gedrag
In eerdere versies was het aanroepen AssemblyName.KeyPair of StrongNameKeyPair(Byte[]) een no-op. Het aanroepen van StrongNameKeyPair(FileStream) de stream is gelezen, maar anders heeft niets gedaan.
Nieuw gedrag
Vanaf .NET 6 genereert elk van de drie betrokken API's een PlatformNotSupportedException runtime.
Versie geïntroduceerd
.NET 6
Type wijziging die fouten veroorzaken
Deze wijziging kan van invloed zijn op binaire compatibiliteit.
Reden voor wijziging
Voorheen heeft een toepassing die de API heeft gecompileerd en uitgevoerd, maar zodra het exemplaar in een codepad is gebruikt, is er een runtime-uitzondering opgetreden. Om het explicieter te maken dat dit scenario niet wordt ondersteund, is de logica voor het genereren van uitzonderingen verplaatst naar de instantieconstructor. Als er geen exemplaren worden gemaakt, wordt de uitzondering ook gegenereerd in openbare toegangspunten die dit type retourneren, dat wil AssemblyName.KeyPairgezegd.
Aanbevolen actie
Ondertekening met sterke namen wordt niet ondersteund in .NET/.NET Core en er is geen tijdelijke oplossing.
Notitie
.NET Core/5+ controleert nooit handtekeningen in de runtime. Als u echter gericht bent op platformoverschrijdende bibliotheken (bijvoorbeeld een basisverificatiepakket dat is gericht op .NET Standard 2.0, zodat het ook op .NET Framework wordt uitgevoerd), is sterke naamgeving een goed idee voor compatibiliteit tussen runtimes. .NET Framework blijft sterke naamgeving afdwingen als de aanroepende app een sterke naam heeft. U kunt assembly's met een sterke naam in alle versies van .NET gebruiken met behulp van het hulpprogramma Sn.exe . Zie Sterke naamondertekening voor meer informatie.