Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, geçerli araçlarla kırpma ile uyumlu olmayan desenler listelenir.
Yansıma tabanlı serileştiriciler
Alternatif: Yansımasız serileştiriciler.
Yansıtmanın birçok kullanım alanı, Kırpma uyarılarına giriş bölümünde açıklandığı gibi kırpma ile 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:
| Serileştiriciler | Alternatif |
|---|---|
| Newtonsoft.Json |
Kaynak oluşturuldu System.Text.Json |
| System.Configuration.ConfigurationManager | Konfigürasyon 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 montaj yükleme ve çalıştırma
Kırpma ve dinamik montaj yükleme, genellikle LoadFrom(String) gibi API'ler aracılığıyla eklentileri veya uzantıları destekleyen sistemler için sık karşılaşılan 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 yönlendirme
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 taşıma için hangi .NET kodunun korunması gerektiğini her zaman tahmin edemez. 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)
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 kırpma ile uyumlu değil sorunu, WPF için kırpmanın etkinleştirilmesi hakkındaki ilerleme için.
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ştirmek üzere WinForms'u kırpma ile uyumlu hale getirme sorununa bakın.