Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Některá rozhraní API související se vzdáleným přístupem jsou označena jako zastaralá a vygenerují SYSLIB0010
varování při kompilaci. Tato rozhraní API mohou být odebrána v budoucích verzích rozhraní .NET.
Změnit popis
Následující rozhraní API vzdálené komunikace jsou označena zastaralá.
API (rozhraní pro programování aplikací) | Označeno jako zastaralé v... |
---|---|
MarshalByRefObject.GetLifetimeService() | 5.0 RC1 |
MarshalByRefObject.InitializeLifetimeService() | 5.0 RC1 |
V rozhraní .NET Framework 2.x – 4.x metody GetLifetimeService() a InitializeLifetimeService() řídí dobu života instancí zapojených do .NET remotingu. V .NET Core 2.x- 3.x tyto metody vždy vyvolávají PlatformNotSupportedException při spuštění.
V .NET 5 a novějších verzích jsou metody GetLifetimeService() a InitializeLifetimeService() označeny jako zastaralé s upozorněním, ale nadále vyvolávají PlatformNotSupportedException za běhu.
// MemoryStream, like all Stream instances, subclasses MarshalByRefObject.
MemoryStream stream = new MemoryStream();
// Throws PlatformNotSupportedException; also produces warning SYSLIB0010.
obj.InitializeLifetimeService();
Jedná se pouze o změnu v době kompilace. V předchozích verzích .NET Core nedošlo k žádné změně za běhu.
Důvod změny
.NET remoting je starší technologie. Umožňuje vytvoření instance objektu v jiném procesu (potenciálně i na jiném počítači) a interakci s tímto objektem, jako by to byla běžná instance objektu .NET v procesu. Infrastruktura vzdálené komunikace .NET existuje pouze v rozhraní .NET Framework 2.x – 4.x. Rozhraní .NET Core a .NET 5 a novější verze nepodporují .NET remoting a rozhraní API pro remoting buď neexistují, nebo na těchto runtimes vždy vyvolávají výjimky.
Abychom vývojáře odradili od používání těchto rozhraní API, činíme vybraná rozhraní API související s vzdálenou komunikací zastaralými. Tato rozhraní API se můžou úplně odebrat v některé budoucí verzi .NET.
Verze byla představena
.NET 5.0
Doporučená akce
Zvažte použití služeb REST založených na WCF nebo HTTP ke komunikaci s objekty v jiných aplikacích nebo napříč počítači. Další informace naleznete v tématu Technologie rozhraní .NET Framework nedostupné v .NET Core.
Pokud musíte i nadále používat zastaralá rozhraní API, můžete upozornění v kódu potlačit
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.
Upozornění v souboru projektu můžete také potlačit, což zakáže upozornění pro všechny zdrojové soubory v projektu.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0010 project-wide --> <NoWarn>$(NoWarn);SYSLIB0010</NoWarn> </PropertyGroup> </Project>
Potlačení
SYSLIB0010
zakáže pouze upozornění na zastaralost rozhraní API. Nezakážuje žádná další upozornění. Navíc nemění pevně zakódované chování běhového běhu vždy vyvolání PlatformNotSupportedException.