.NET Framework teknolojileri .NET'te kullanılamıyor

.NET Framework kitaplıklarında kullanılabilen uygulama etki alanları, uzaktan iletişim ve kod erişimi güvenliği (CAS) gibi çeşitli teknolojiler .NET 6+ ile kullanılamaz. Kitaplıklarınız bu sayfada listelenen teknolojilerden birini veya daha fazlasını kullanıyorsa, bahsedilen alternatif yaklaşımları göz önünde bulundurun.

API uyumluluğu hakkında daha fazla bilgi için bkz . .NET'te hataya neden olan değişiklikler.

Uygulama etki alanları

Uygulama etki alanları (AppDomains) uygulamaları birbirinden ayırır. AppDomains çalışma zamanı desteği gerektirir ve kaynak pahalıdır. Daha fazla uygulama etki alanı oluşturma desteklenmez ve gelecekte bu özelliği eklemeye yönelik bir plan yoktur. Kod yalıtımı için alternatif olarak ayrı işlemler veya kapsayıcılar kullanın. Derlemeleri dinamik olarak yüklemek için sınıfını AssemblyLoadContext kullanın.

.NET Framework'ten kod geçişini kolaylaştırmak için .NET 6+ bazı API yüzeylerini AppDomain kullanıma sunar. API'lerin bazıları normal şekilde çalışır (örneğin, AppDomain.UnhandledException), bazı üyeler hiçbir şey yapmaz (örneğin, SetCachePath) ve bazıları (örneğin, CreateDomain) atar PlatformNotSupportedException . dotnet/runtime GitHub deposundaki başvuru kaynağında kullandığınız System.AppDomain türleri denetleyin. Uygulanan sürümünüzle eşleşen dalı seçtiğinizden emin olun.

Remoting

.NET Uzaktan İletişimi .NET 6+ üzerinde desteklenmez. .NET uzaktan iletişim sorunlu bir mimari olarak tanımlandı. Artık desteklenmeyen uygulama etki alanları arasında iletişim kurmak için kullanılır. Ayrıca uzaktan iletişim, bakımı pahalı olan çalışma zamanı desteği gerektirir.

İşlemler arasında basit iletişim için, sınıf veya MemoryMappedFile sınıf gibi uzaktan iletişimin alternatifi olarak System.IO.Pipes işlemler arası iletişim (IPC) mekanizmalarını göz önünde bulundurun. Daha karmaşık senaryolar için açık kaynak StreamJsonRpc projesi, mevcut akış veya kanal bağlantılarının üzerinde çalışan platformlar arası bir .NET Standart uzaktan iletişim çerçevesi sağlar.

Makineler arasında alternatif olarak ağ tabanlı bir çözüm kullanın. Tercihen, HTTP gibi düşük ek yüklü bir düz metin protokolü kullanın. ASP.NET Core tarafından kullanılan web sunucusu olan Kestrel web sunucusu burada bir seçenektir. Ayrıca, ağ tabanlı, makineler arası senaryolar için kullanmayı System.Net.Sockets göz önünde bulundurun. Daha önce bahsedilen StreamJsonRpc, web yuvaları üzerinden JSON veya ikili (MessagePack aracılığıyla) iletişimi için kullanılabilir.

Diğer mesajlaşma seçenekleri için bkz . .NET Açık Kaynak Geliştirici Projeleri: Mesajlaşma.

uzaktan iletişim desteklenmediğinden, temsilci nesnelere BeginInvoke() ve EndInvoke() üzerindeki çağrılar oluşturur PlatformNotSupportedException. Daha fazla bilgi için bkz . .NET Core için Temsilci BeginInvoke Çağrılarını Geçirme.

Kod erişim güvenliği (CAS)

Yönetilen bir uygulama veya kitaplığın hangi kaynakları kullandığını veya çalıştırdığını kısıtlamak için çalışma zamanını veya çerçeveyi kullanan korumalı alan, .NET Framework'te desteklenmez ve bu nedenle .NET 6+ üzerinde de desteklenmez. .NET Framework'te ve çalışma zamanında ayrıcalıkların yükseltilmesinin gerçekleştiği çok fazla durum olduğundan CAS artık güvenlik sınırı olarak değerlendirilmez. Ayrıca CAS, uygulamayı daha karmaşık hale getirir ve genellikle kullanmayı düşünmeyen uygulamalar için doğruluk-performans etkileri vardır.

İşlemleri en düşük ayrıcalık kümesiyle çalıştırmak için işletim sistemi tarafından sağlanan sanallaştırma, kapsayıcılar veya kullanıcı hesapları gibi güvenlik sınırlarını kullanın.

Güvenlik saydamlığı

CAS'ye benzer şekilde, güvenlik saydamlığı korumalı kodu güvenlik kritik kodundan bildirim temelli bir şekilde ayırır, ancak artık güvenlik sınırı olarak desteklenmez. Bu özellik Silverlight tarafından yoğun olarak kullanılır.

İşlemleri en az ayrıcalık kümesiyle çalıştırmak için sanallaştırma, kapsayıcılar veya kullanıcı hesapları gibi işletim sistemi tarafından sağlanan güvenlik sınırlarını kullanın.

Enterpriseservices

System.EnterpriseServices (COM+) .NET 6+ tarafından desteklenmez.

Workflow Foundation

Windows Workflow Foundation (WF), .NET 6+'da desteklenmez. Alternatif olarak bkz . CoreWF.

İpucu

Windows Communication Foundation (WCF) sunucusu CoreWCF NuGet paketleri kullanılarak .NET 6+ içinde kullanılabilir. Daha fazla bilgi için bkz . CoreWCF 1.0 Yayımlandı.

Bazı yansıma yayma API'leri desteklenmez

.NET 8 ve önceki .NET (Core) sürümleri, API'ler tarafından oluşturulan derlemelerin kaydedilmesini System.Reflection.Emit desteklemez ve AssemblyBuilder.Save yöntemi kullanılamaz. Ayrıca, numaralandırmanın AssemblyBuilderAccess aşağıdaki alanları kullanılamaz:

.NET 9'da bir PersistedAssemblyBuilder uygulandı ve AssemblyBuilder.Save yöntemi yansıma yayma kitaplığına geri eklendi. Bu API'yi kullanma hakkında daha fazla bilgi edinmek için bkz. System.DüşüncelerIyon. Emit.AssemblyBuilder sınıfı.

Daha fazla bilgi için bkz . dotnet/runtime issue 15704.

Çok modüllü derlemeleri yükleme

Birden çok modülden (OutputType=Module MSBuild'de) oluşan derlemeler .NET 6+ içinde desteklenmez.

Alternatif olarak, tek tek modülleri tek bir derleme dosyasında birleştirmeyi göz önünde bulundurun.

XSLT betik blokları

XSLT betik blokları yalnızca .NET Framework'te desteklenir. .NET 6 veya sonraki sürümlerde desteklenmez.

Ayrıca bkz.