Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini mencantumkan pola yang tidak kompatibel dengan pemangkasan dengan alat saat ini.
Serializer berbasis refleksi
Alternatif: Serializer bebas refleksi.
Banyak penggunaan pantulan dapat dibuat kompatibel dengan pemangkasan, seperti yang dijelaskan dalam Pengantar peringatan pemangkasan. Namun, para serializer cenderung memiliki penggunaan refleksi yang kompleks. Banyak dari penggunaan ini tidak dapat dianalisis saat pembangunan. Sayangnya, opsi terbaik sering kali adalah menulis ulang sistem untuk menggunakan pembuatan sumber.
Tabel berikut mencantumkan serializer berbasis refleksi populer dan alternatif yang direkomendasikan:
| Serializer | Alternatif |
|---|---|
| Newtonsoft.Json |
Sumber yang dihasilkan System.Text.Json |
| System.Configuration.ConfigurationManager | Penghasil sumber pengikatan konfigurasi |
| System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | Menghindari penggunaan BinaryFormatter untuk serialisasi dikarenakan kelemahan pada aspek keamanan dan keandalannya. |
Pembuatan kode runtime melalui JIT
Pembuatan kode runtime melalui JIT, misalnya, melalui System.Reflection.Emit tidak kompatibel dengan pemangkasan.
Pemuatan dan eksekusi rakitan dinamis
Pemangkasan dan pemuatan rakitan dinamis adalah masalah umum untuk sistem yang mendukung plugin atau ekstensi, biasanya melalui API seperti LoadFrom(String). Pemangkasan bergantung pada melihat semua rakitan pada waktu build, sehingga tahu kode mana yang digunakan dan tidak dapat dipangkas. Sebagian besar sistem plugin memuat kode pihak ketiga secara dinamis, sehingga tidak mungkin bagi pemangkas untuk mengidentifikasi kode apa yang diperlukan.
Ketidakcocokan platform Windows
Bagian berikut ini mencantumkan ketidakcocokan yang diketahui dalam proses pemangkasan di Windows.
Pemrograman NET dengan C++/CLI
Pemrograman NET dengan C++/CLI saat ini tidak mendukung pemangkasan.
Marshalling COM Terintegrasi
Alternatif: COM Wrappers
Marshalling COM otomatis telah terintegrasi dalam .NET sejak .NET Framework 1.0. Ini menggunakan analisis kode runtime untuk secara otomatis mengonversi antara objek COM asli dan objek .NET terkelola. Sayangnya, analisis pemangkasan tidak selalu dapat memprediksi kode .NET apa yang perlu dipertahankan untuk marshalling COM otomatis. Namun, jika COM Wrappers digunakan sebagai gantinya, analisis pemangkasan dapat menjamin bahwa semua kode yang digunakan akan dipertahankan dengan benar.
WPF (Windows Presentation Foundation)
Kerangka kerja Windows Presentation Foundation (WPF) membuat penggunaan refleksi yang substansial dan beberapa fitur sangat bergantung pada inspeksi kode runtime. Analisis pemangkasan tidak memungkinkan untuk mempertahankan semua kode yang diperlukan untuk aplikasi WPF. Sayangnya, hampir tidak ada aplikasi WPF yang dapat dijalankan setelah pemangkasan, sehingga dukungan pemangkasan untuk WPF saat ini dinonaktifkan di .NET SDK. Lihat masalah WPF tidak kompatibel dengan pemangkasan untuk kemajuan dalam mengaktifkan pemangkasan untuk WPF.
Formulir Windows
Kerangka kerja Windows Forms membuat penggunaan refleksi minimal, tetapi sangat bergantung pada marshalling COM bawaan. Sayangnya, hampir tidak ada aplikasi Windows Forms yang dapat dijalankan tanpa marshalling COM bawaan, sehingga dukungan pemangkasan untuk aplikasi Windows Forms dinonaktifkan di .NET SDK saat ini. Lihat masalah Menjadikan WinForms kompatibel dengan pemangkasan untuk kemajuan dalam mengaktifkan pemangkasan untuk Windows Forms.