強式名稱 API 會擲回 PlatformNotSupportedException

.NET/.NET Core 中有數個不支援的 API,但存取時不會進行任何動的情況已變更,現在會於執行階段擲回 PlatformNotSupportedException。 過去,使用這些 API 最終會導致執行階段例外狀況進一步執行;當類型具現化或第一次受到存取時,現在會擲回例外狀況。

先前的行為

在舊版中呼叫 AssemblyName.KeyPairStrongNameKeyPair(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 會繼續強制使用強式命名。 您可以使用 Sn.exe 工具強式命名所有版本 .NET 中的組件。 如需詳細資訊,請參閱強式名稱簽署

受影響的 API

另請參閱