Les API de communication à distance sont obsolètes
Certaines API liées à la communication à distance sont marquées comme obsolètes et génèrent un avertissement SYSLIB0010
au moment de la compilation. Ces API peuvent être supprimées dans une version ultérieure de .NET.
Description de la modification
Les API de communication à distance suivantes sont marquées comme obsolètes.
API | Marqué comme obsolète dans... |
---|---|
MarshalByRefObject.GetLifetimeService() | 5.0 RC1 |
MarshalByRefObject.InitializeLifetimeService() | 5.0 RC1 |
Dans .NET Framework 2.x - 4.x, les méthodes GetLifetimeService() et InitializeLifetimeService() contrôlent la durée de vie des instances impliquées dans la communication à distance .NET. Dans .NET Core 2.x- 3.x, ces méthodes lèvent toujours PlatformNotSupportedException au moment de l’exécution.
Dans .NET 5 et versions ultérieures, les méthodes GetLifetimeService() et InitializeLifetimeService() sont marquées comme obsolètes en tant qu’avertissement, mais continuent à lever PlatformNotSupportedException au moment de l’exécution.
// MemoryStream, like all Stream instances, subclasses MarshalByRefObject.
MemoryStream stream = new MemoryStream();
// Throws PlatformNotSupportedException; also produces warning SYSLIB0010.
obj.InitializeLifetimeService();
Il s’agit d’une modification au moment de la compilation uniquement. Il n’y a aucun changement au moment de l’exécution par rapport aux versions précédentes de .NET Core.
Raison du changement
La communication à distance .NET est une technologie héritée. Cela permet d’instancier un objet dans un autre processus (potentiellement même sur une autre machine) et d’interagir avec cet objet comme s’il s’agissait d’une instance d’objet .NET ordinaire et in-process. L’infrastructure de communication à distance .NET existe uniquement dans .NET Framework 2.x - 4.x. .NET Core et .NET 5 et versions ultérieures n’ont pas de prise en charge de la communication à distance .NET, et les API de communication à distance n’existent pas ou lèvent toujours des exceptions sur ces runtimes.
Pour encourager les développeurs à abandonner ces API, nous rendons certaines API liées à la communication à distance obsolètes. Ces API pourraient être supprimées entièrement dans une version ultérieure de .NET.
Version introduite
.NET 5.0
Action recommandée
Envisagez d’utiliser des services REST basés sur WCF ou HTTP pour communiquer avec des objets dans d’autres applications ou entre des machines. Pour plus d’informations, consultez Technologies .NET Framework non disponibles sur .NET Core.
Si vous devez continuer à utiliser les API obsolètes, vous pouvez supprimer l’avertissement
SYSLIB0010
dans le code.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.
Vous pouvez également supprimer l’avertissement dans votre fichier projet, ce qui désactive l’avertissement pour tous les fichiers sources du projet.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0010 project-wide --> <NoWarn>$(NoWarn);SYSLIB0010</NoWarn> </PropertyGroup> </Project>
La suppression de
SYSLIB0010
désactive uniquement les avertissements d’obsolescence de l’API de communication à distance. Cela ne désactive aucun autre avertissement. En outre, cela ne modifie pas le comportement d’exécution codé en dur de toujours lever PlatformNotSupportedException.
API affectées
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour