遠端處理 API 已過時
某些遠端相關 API 會標示為過時,並在編譯時間產生 SYSLIB0010
警告。 這些 API 可能會在 .NET 的未來版本中移除。
變更描述
下列遠端 API 標示為已淘汰。
API | 標示為已淘汰... |
---|---|
MarshalByRefObject.GetLifetimeService() | 5.0 RC1 |
MarshalByRefObject.InitializeLifetimeService() | 5.0 RC1 |
在 .NET Framework 2.x - 4.x 中,GetLifetimeService() 和 InitializeLifetimeService() 方法可控制與 .NET 遠端處理相關的執行個體的存留期。 在 .NET Core 2.x- 3.x 中,這些方法一律會在執行階段擲回 PlatformNotSupportedException。
在 .NET 5 和更新版本中,GetLifetimeService() 和 InitializeLifetimeService() 方法會標示已淘汰作為警告,但會繼續在執行階段擲回 PlatformNotSupportedException。
// MemoryStream, like all Stream instances, subclasses MarshalByRefObject.
MemoryStream stream = new MemoryStream();
// Throws PlatformNotSupportedException; also produces warning SYSLIB0010.
obj.InitializeLifetimeService();
此變更僅限編譯時期。 舊版 .NET Core 沒有執行階段變更。
變更原因
.NET 遠端處理為舊技術。 這項技術可在另一個處理序中 (甚至可能在不同電腦上) 具現化物件,並與該物件互動,如同一般同處理序的 .NET 物件執行個體。 .NET 遠端處理基礎結構只存在於 .NET Framework 2.x - 4.x 中。 .NET Core 及 .NET 5 和更新版本不支援 .NET 遠端處理,且遠端 API 不存在,或者一律會在這些執行階段擲回例外狀況。
為協助開發人員避開這些 API,我們會淘汰特定遠端相關 API。 這些 API 可能會在 .NET 的未來版本中完全移除。
導入的版本
.NET 5.0
建議的動作
請考慮使用 WCF 或以 HTTP 為基礎的 REST 服務,以便與其他應用程式或跨電腦的物件進行通訊。 如需詳細資訊,請參閱 .NET Core 上無法使用的 .NET Framework 技術。
若您必須繼續使用已淘汰的 API,則可在程式碼中隱藏
SYSLIB0010
警告。MarshalByRefObject obj = GetMarshalByRefObj(); #pragma warning disable SYSLIB0010 // Disable the warning. obj.InitializeLifetimeService(); // Still throws PNSE. obj.GetLifetimeService(); // Still throws PNSE. #pragma warning restore SYSLIB0010 // Reenable the warning.
您也可隱藏專案檔中的警告,如此會停用專案中所有來源檔案的警告。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0010 project-wide --> <NoWarn>$(NoWarn);SYSLIB0010</NoWarn> </PropertyGroup> </Project>
隱藏
SYSLIB0010
只會停用遠端 API 過時警告, 而不會停用其他任何警告。 此外,該動作也不會變更一律擲回 PlatformNotSupportedException 的硬式編碼執行階段行為。