次の方法で共有


厳密な名前の API によって PlatformNotSupportedException がスローされる

.NET/.NET Core ではサポートされていないが、アクセス時に何もしなかった いくつかの API が、実行時に PlatformNotSupportedException をスローするように変更されました。 これらの API を使用すると、以前は実行時にさらに先で例外が発生することがありましたが、現在では型がインスタンス化されるか最初にアクセスされるとすぐに例外がスローされるようになりました。

以前の動作

以前のバージョンでは、 AssemblyName.KeyPair または StrongNameKeyPair(Byte[]) の呼び出しは no-opでした。 呼び出 StrongNameKeyPair(FileStream) ストリームを読み取りますが、それ以外の場合は何もしませんでした。

新しい動作

.NET 6 以降、影響を受ける 3 つの API はそれぞれ実行時に PlatformNotSupportedException をスローします。

導入されたバージョン

.NET 6

破壊的変更の種類

この変更は 、バイナリの互換性に影響する可能性があります。

変更の理由

以前は、API を呼び出して実行したアプリケーションは、コンパイルされて実行されましたが、インスタンスがコード パスで使用されるとすぐに実行時例外がスローされました。 このシナリオがサポートされていないことをより明確にするために、例外スロー ロジックがインスタンス コンストラクターに移動されました。 インスタンスが作成されない場合、この型(例えば、AssemblyName.KeyPair)を返すパブリックエントリポイントでも例外がスローされます。

.NET/.NET Core では厳密な名前の署名はサポートされていないため、回避策はありません。

.NET Core/5 以降では、ランタイム内の署名はチェックされません。 ただし、クロスプラットフォーム ライブラリ (たとえば、.NET Standard 2.0 をターゲットとする基本認証パッケージなど) をターゲットにしているため、.NET Framework でも実行される場合は、実行時間の互換性のために厳密な名前付けが推奨されます。 呼び出し元のアプリに厳密な名前が付けられている場合、.NET Framework は引き続き厳密な名前付けを適用します。 Sn.exe ツールを使用して、すべてのバージョンの .NET でアセンブリに厳密な名前を付けることができます。 詳細については、ストロングネーム署名を参照してください。

影響を受ける API

こちらも参照ください