Bilinen kırpma uyumsuzlukları
Bu makalede, geçerli araçlarla kırpma ile uyumlu olmayan desenler listelenir.
Düşünceler tabanlı serileştiriciler
Alternatif: Düşünceler serbest serileştiriciler.
Kırpma uyarılarına giriş bölümünde açıklandığı gibi, yansımanın birçok kullanım alanı kırpma uyumlu hale getirilebilir. Ancak, serileştiriciler yansımanın karmaşık kullanımlarına sahip olma eğilimindedir. Bu kullanımların çoğu derleme zamanında analiz edilebilir hale getirilemez. Ne yazık ki, en iyi seçenek genellikle kaynak oluşturmayı kullanmak üzere sistemi yeniden yazmaktır.
Aşağıdaki tabloda popüler yansıma tabanlı serileştiriciler ve önerilen alternatifler listelenmiştir:
Serializers | Alternatif |
---|---|
Newtonsoft.Json | Kaynak oluşturuldu System.Text.Json |
System.Configuration.ConfigurationManager | Yapılandırma bağlama kaynak oluşturucu |
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | Güvenlik ve güvenilirlik açıkları nedeniyle BinaryFormatter serileştirmesinden uzak geçiş. |
JIT aracılığıyla çalışma zamanı kodu oluşturma
Örneğin JIT aracılığıyla çalışma zamanı kodu oluşturma işlemi kırpma System.Reflection.Emit ile uyumsuzdur.
Dinamik derleme yükleme ve yürütme
Kırpma ve dinamik montaj yükleme, genellikle gibi LoadFrom(String)API'ler aracılığıyla eklentileri veya uzantıları destekleyen sistemler için yaygın bir sorundur. Kırpma işlemi, derleme zamanında tüm derlemeleri görmeye dayanır, böylece hangi kodun kullanıldığını ve kırpılmaması gerektiğini bilir. Çoğu eklenti sistemi üçüncü taraf kodu dinamik olarak yükler, bu nedenle düzelticinin hangi kodun gerekli olduğunu belirlemesi mümkün değildir.
Windows platformu uyumsuzlukları
Aşağıdaki bölümlerde Windows'ta kırpma ile ilgili bilinen uyumsuzluklar listeleniyor.
C++/CLI ile NET programlama
C++/CLI ile NET programlama şu anda kırpmayı desteklemez.
Yerleşik COM marshalling
Alternatif: COM Sarmalayıcıları
.NET Framework 1.0'dan bu yana .NET'te otomatik COM marshalling yerleşik olarak yer almaktadır. Yerel COM nesneleriyle yönetilen .NET nesneleri arasında otomatik olarak dönüştürmek için çalışma zamanı kod analizini kullanır. Ne yazık ki kırpma analizi, otomatik COM marshalling için hangi .NET kodunun korunması gerektiğini her zaman tahmin edebilir. Ancak, bunun yerine COM Sarmalayıcıları kullanılırsa, kırpma analizi kullanılan tüm kodların doğru şekilde korunacağını garanti edebilir.
WPF
Windows Presentation Foundation (WPF) çerçevesi, yansımayı önemli ölçüde kullanır ve bazı özellikler çalışma zamanı kod incelemesine yoğun bir şekilde dayanır. WPF uygulamaları için gerekli tüm kodları korumak için çözümlemeyi kırpmak mümkün değildir. Ne yazık ki, kırpmadan sonra neredeyse hiç WPF uygulaması çalıştırılamaz, bu nedenle WPF için kırpma desteği şu anda .NET SDK'sında devre dışı bırakılmıştır. BKz . WPF için kırpmayı etkinleştirme işlemindeki ilerleme durumu için WPF kırpmayla uyumlu değil sorunu.
Windows Forms
Windows Forms çerçevesi, yansımayı en az düzeyde kullanır, ancak yerleşik COM marshalling'e yoğun bir şekilde dayanır. Ne yazık ki, yerleşik COM marshalling olmadan neredeyse hiçbir Windows Forms uygulaması çalıştırılamaz, bu nedenle Windows Forms uygulamaları için kırpma desteği şu anda .NET SDK'sında devre dışı bırakılmıştır. Windows Forms için kırpmayı etkinleştirme konusunda ilerleme için bkz . WinForms kırpma uyumlu sorunu.