Freigeben über


Remoting-APIs sind veraltet

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

  • 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.

Betroffene APIs