Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Alcune API correlate alla comunicazione remota sono contrassegnate come obsolete e generano un SYSLIB0010 avviso in fase di compilazione. Queste API possono essere rimosse in una versione futura di .NET.
Descrizione delle modifiche
Le API di comunicazione remota seguenti sono contrassegnate come obsolete.
| API (Interfaccia di Programmazione delle Applicazioni) | Contrassegnato come obsoleto in... |
|---|---|
| MarshalByRefObject.GetLifetimeService() | 5.0 RC1 |
| MarshalByRefObject.InitializeLifetimeService() | 5.0 RC1 |
In .NET Framework 2.x - 4.x, i metodi GetLifetimeService() e InitializeLifetimeService() controllano la durata delle istanze coinvolte nella comunicazione remota .NET. In .NET Core 2.x- 3.x questi metodi generano sempre un'eccezione PlatformNotSupportedException in fase di esecuzione.
In .NET 5 e versioni successive, i metodi GetLifetimeService() e InitializeLifetimeService() vengono contrassegnati come obsoleti come avvertimento, ma continuano a generare un'eccezione PlatformNotSupportedException in fase di esecuzione.
// MemoryStream, like all Stream instances, subclasses MarshalByRefObject.
MemoryStream stream = new MemoryStream();
// Throws PlatformNotSupportedException; also produces warning SYSLIB0010.
obj.InitializeLifetimeService();
Si tratta di una modifica solo in fase di compilazione. Non sono state apportate modifiche di runtime rispetto alle versioni precedenti di .NET Core.
Motivo della modifica
La comunicazione remota .NET è una tecnologia obsoleta. Consente di creare un'istanza di un oggetto in un altro processo (potenzialmente anche in un computer diverso) e di interagire con tale oggetto come se fosse un'istanza normale dell'oggetto .NET in-process. L'infrastruttura remota .NET esiste solo in .NET Framework 2.x - 4.x. .NET Core e .NET 5 e versioni successive non supportano la comunicazione remota .NET e le API di comunicazione remota non esistono o generano sempre eccezioni in questi runtime.
Per aiutare gli sviluppatori ad allontanarsi da queste API, stiamo rendendo obsolete le API selezionate correlate alla comunicazione remota. Queste API possono essere rimosse interamente in una versione futura di .NET.
Versione introdotta
.NET 5.0
Azione consigliata
È consigliabile usare servizi REST basati su WCF o HTTP per comunicare con oggetti in altre applicazioni o tra computer. Per altre informazioni, vedere Tecnologie .NET Framework non disponibili in .NET Core.
Se è necessario continuare a usare le API obsolete, è possibile eliminare l'avviso
SYSLIB0010nel codice.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.È anche possibile eliminare l'avviso nel file di progetto, che disabilita l'avviso per tutti i file di origine nel progetto.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0010 project-wide --> <NoWarn>$(NoWarn);SYSLIB0010</NoWarn> </PropertyGroup> </Project>La disattivazione di
SYSLIB0010disabilita solo gli avvisi di obsolescenza dell'API di remotizzazione. Non disabilita altri avvisi. Inoltre, non modifica il comportamento di runtime codificato in modo rigido di generare sempre PlatformNotSupportedException.