Share via


Uzaktan iletişim API’leri kullanımdan kaldırıldı

Uzaktan iletişimle ilgili bazı API'ler eski olarak işaretlenir ve derleme zamanında bir SYSLIB0010 uyarı oluşturur. Bu API'ler .NET'in gelecekteki bir sürümünde kaldırılabilir.

Açıklama değiştirildi

Aşağıdaki uzaktan iletişim API'leri eski olarak işaretlenir.

API Eski olarak işaretlendi...
MarshalByRefObject.GetLifetimeService() 5.0 RC1
MarshalByRefObject.InitializeLifetimeService() 5.0 RC1

.NET Framework 2.x - 4.x'te ve InitializeLifetimeService() yöntemleri, GetLifetimeService() .NET uzaktan iletişimiyle ilgili örneklerin yaşam ömrünü denetler. .NET Core 2.x- 3.x'te bu yöntemler her zaman çalışma zamanında bir PlatformNotSupportedException oluşturur.

.NET 5 ve sonraki sürümlerinde GetLifetimeService() ve InitializeLifetimeService() yöntemleri uyarı olarak eski olarak işaretlenir, ancak çalışma zamanında atmaya PlatformNotSupportedException devam eder.

// MemoryStream, like all Stream instances, subclasses MarshalByRefObject.
MemoryStream stream = new MemoryStream();
// Throws PlatformNotSupportedException; also produces warning SYSLIB0010.
obj.InitializeLifetimeService();

Bu yalnızca derleme zamanı değişikliğidir. .NET Core'un önceki sürümlerinde çalışma zamanı değişikliği yoktur.

Değişiklik nedeni

.NET uzaktan iletişim eski bir teknolojidir. Bir nesnenin başka bir işlemde (potansiyel olarak farklı bir makinede bile) örneklenmesine ve bu nesneyle sıradan, işlem içi bir .NET nesne örneğiymiş gibi etkileşim kurmasına olanak tanır. .NET uzaktan iletişim altyapısı yalnızca .NET Framework 2.x - 4.x'te bulunur. .NET Core ve .NET 5 ve sonraki sürümleri .NET uzaktan iletişim desteğine sahip değildir ve uzaktan iletişim API'leri mevcut değildir veya bu çalışma zamanlarında her zaman özel durumlar oluşturur.

Geliştiricileri bu API'lerden uzaklaştırmaya yardımcı olmak için, seçilen uzaktan iletişimle ilgili API'leri kullanımdan kaldırıyoruz. Bu API'ler gelecekteki bir .NET sürümünde tamamen kaldırılabilir.

Sürüm kullanıma sunulmuştur

.NET 5.0

  • Diğer uygulamalarda veya makineler arasında nesnelerle iletişim kurmak için WCF veya HTTP tabanlı REST hizmetlerini kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz . .NET Core'da kullanılamayan .NET Framework teknolojileri.

  • Eski API'leri kullanmaya devam etmeniz gerekiyorsa, uyarıyı SYSLIB0010 kodda gizleyebilirsiniz.

    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.
    

    Ayrıca proje dosyanızda uyarıyı gizleyebilirsiniz ve bu da uyarıyı projedeki tüm kaynak dosyalar için devre dışı bırakır.

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
       <TargetFramework>net5.0</TargetFramework>
       <!-- NoWarn below will suppress SYSLIB0010 project-wide -->
       <NoWarn>$(NoWarn);SYSLIB0010</NoWarn>
      </PropertyGroup>
    </Project>
    

    Gizlenmesi SYSLIB0010 yalnızca uzaktan iletişim API'sinin kullanımdan kaldırılma uyarılarını devre dışı bırakır. Diğer uyarıları devre dışı bırakmaz. Ayrıca, her zaman oluşturmanın PlatformNotSupportedExceptionsabit kodlanmış çalışma zamanı davranışını değiştirmez.

Etkilenen API’ler