Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Einige Remoting-bezogene APIs werden als veraltet gekennzeichnet und lösen zur Kompilierzeit die Warnung SYSLIB0010
aus. Diese APIs können in einer zukünftigen Version von .NET entfernt werden.
Änderungsbeschreibung
Die folgenden APIs sind als veraltet markiert.
Programmierschnittstelle (API) | Als veraltet markiert in... |
---|---|
MarshalByRefObject.GetLifetimeService() | 5.0 RC1 |
MarshalByRefObject.InitializeLifetimeService() | 5.0 RC1 |
In .NET Framework 2.x - 4.x steuern die Methoden GetLifetimeService() und InitializeLifetimeService() die Lebensdauer von Instanzen, die mit .NET Remoting verbunden sind. In .NET Core 2.x bis 3.x lösen diese Methoden zur Laufzeit immer eine Ausnahme des Typs PlatformNotSupportedException aus.
In .NET 5 und höheren Versionen sind die Methoden GetLifetimeService() und InitializeLifetimeService() als veraltet als Warnung gekennzeichnet, werfen aber weiterhin zur Laufzeit ein PlatformNotSupportedException.
// MemoryStream, like all Stream instances, subclasses MarshalByRefObject.
MemoryStream stream = new MemoryStream();
// Throws PlatformNotSupportedException; also produces warning SYSLIB0010.
obj.InitializeLifetimeService();
Dies ist eine Änderung, die nur die Kompilierzeit betrifft. Es gibt keine Laufzeitänderung von früheren Versionen von .NET Core.
Grund für Änderung
.NET-Remoting ist eine ältere Technologie. Es ermöglicht das Instanziieren eines Objekts in einem anderen Prozess (möglicherweise sogar auf einem anderen Computer) und die Interaktion mit diesem Objekt, als wäre es eine normale instanziierende .NET-Objektinstanz. Die .NET-Remotinginfrastruktur ist nur in .NET Framework 2.x - 4.x vorhanden. .NET Core und .NET 5 und höhere Versionen haben keine Unterstützung für .NET-Remoting, und die Remoting-APIs sind entweder nicht vorhanden oder lösen immer Ausnahmen für diese Laufzeiten aus.
Um Entwickler von diesen APIs wegzulenken, machen wir ausgewählte Remoting-bezogene APIs veraltet. Diese APIs können vollständig in einer zukünftigen Version von .NET entfernt werden.
Eingeführte Version
.NET 5.0
Empfohlene Aktion
Erwägen Sie die Verwendung von WCF- oder HTTP-basierten REST-Diensten, um mit Objekten in anderen Anwendungen oder computernübergreifend zu kommunizieren. Weitere Informationen finden Sie unter .NET Framework-Technologien, die auf .NET Core nicht verfügbar sind.
Wenn Sie die veralteten APIs weiterhin verwenden müssen, können Sie die
SYSLIB0010
Warnung im Code unterdrücken.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.
Sie können auch die Warnung in der Projektdatei unterdrücken, wodurch die Warnung für alle Quelldateien im Projekt deaktiviert wird.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0010 project-wide --> <NoWarn>$(NoWarn);SYSLIB0010</NoWarn> </PropertyGroup> </Project>
Durch das Unterdrücken von
SYSLIB0010
werden nur Veraltungswarnungen für die Remoting-APIs deaktiviert. Es werden keine anderen Warnungen deaktiviert. Außerdem wird das hartcodierte Laufzeitverhalten nicht geändert, das darin besteht, PlatformNotSupportedException immer auszulösen.