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.
Properti dan item MSBuild yang dijelaskan dalam artikel ini memengaruhi perilaku penyebaran mandiri yang dipangkas. Beberapa opsi menyebutkan ILLink
, yang merupakan nama alat yang mendasar yang mengimplementasikan pemangkasan. Untuk informasi selengkapnya tentang alat yang mendasar, lihat dokumentasi Pemangkas.
Pemangkasan dengan PublishTrimmed
diperkenalkan dalam .NET Core 3.0. Opsi lain tersedia di .NET 5 dan versi yang lebih baru.
Mengaktifkan pemangkasan
<PublishTrimmed>true</PublishTrimmed>
Aktifkan pemangkasan selama penerbitan. Pengaturan ini juga menonaktifkan fitur yang tidak kompatibel dengan trim dan memungkinkan analisis pemangkasan selama build. Di aplikasi .NET 8 dan yang lebih baru, pengaturan ini juga memungkinkan pengikatan konfigurasi dan meminta generator sumber delegasi.
Catatan
Jika Anda menentukan pemangkasan sebagai diaktifkan dari baris perintah, pengalaman penelusuran kesalahan Anda akan berbeda dan Anda mungkin mengalami bug tambahan di produk akhir.
Tempatkan pengaturan ini dalam file proyek untuk memastikan bahwa pengaturan berlaku selama dotnet build
, bukan hanya dotnet publish
.
Pengaturan ini juga memungkinkan penganalisis Roslyn kompatibilitas pemangkasan dan menonaktifkan fitur yang tidak kompatibel dengan pemangkasan.
Penganalisis Roslyn
Pengaturan PublishTrimmed
di .NET 6+ juga memungkinkan penganalisis Roslyn yang menunjukkan serangkaian peringatan analisis terbatas . Anda juga dapat mengaktifkan atau menonaktifkan penganalisis secara independen dari PublishTrimmed
.
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
Aktifkan penganalisis Roslyn untuk subset peringatan analisis pemangkasan.
Menutupi peringatan
Anda dapat menekan kode peringatan individual Ada opsi tambahan yang mengontrol perilaku peringatan sebagai kesalahan ILLink secara independen:
<ILLinkTreatWarningsAsErrors>false</ILLinkTreatWarningsAsErrors>
Jangan perlakukan peringatan ILLink sebagai kesalahan. Ini mungkin berguna untuk menghindari mengubah peringatan analisis pemangkasan menjadi kesalahan saat memperlakukan peringatan kompilator sebagai kesalahan secara global.
Tampilkan peringatan terperinci
Dalam .NET 6+, analisis pemangkasan menghasilkan paling banyak satu peringatan untuk setiap rakitan yang berasal dari PackageReference
, yang menunjukkan bahwa internal rakitan tidak kompatibel dengan pemangkasan. Anda juga dapat menampilkan peringatan individual untuk semua rakitan:
<TrimmerSingleWarn>false</TrimmerSingleWarn>
Tampilkan semua peringatan terperinci, alih-alih menciutkannya ke satu peringatan per perakitan.
Menghapus simbol
Simbol biasanya dipangkas agar sesuai dengan rakitan yang dipangkas. Anda juga dapat menghapus semua simbol:
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
Hapus simbol dari aplikasi yang dipangkas, termasuk PDB yang disematkan dan file PDB terpisah. Ini berlaku untuk kode aplikasi dan dependensi apa pun yang disertakan dengan simbol.
SDK juga memungkinkan untuk menonaktifkan dukungan debugger menggunakan properti DebuggerSupport
. Ketika dukungan debugger dinonaktifkan, pemangkasan akan menghapus simbol secara otomatis (TrimmerRemoveSymbols
akan default ke true).
Memangkas fitur pustaka kerangka kerja
Beberapa area fitur pustaka kerangka kerja dilengkapi dengan arahan pemangkas yang memungkinkan untuk menghapus kode untuk fitur yang dinonaktifkan.
Properti MSBuild | Deskripsi |
---|---|
AutoreleasePoolSupport |
Saat diatur ke false , menghapus kode yang membuat kumpulan penghapusan otomatis pada platform yang didukung.
false adalah default untuk .NET SDK. |
DebuggerSupport |
Saat diatur ke false , menghapus kode yang memungkinkan pengalaman penelusuran kesalahan yang lebih baik. Pengaturan ini juga menghapus simbol. |
EnableUnsafeBinaryFormatterSerialization |
Saat diatur ke false , menghapus dukungan serialisasi BinaryFormatter. Untuk informasi selengkapnya, lihat Metode serialisasi BinaryFormatter usang dan implementasi BinaryFormatter dalam kotak dihapus dan selalu dilemparkan. |
EnableUnsafeUTF7Encoding |
Saat diatur ke false , menghapus kode pengodean UTF-7 yang tidak aman. Untuk informasi selengkapnya, lihat Jalur kode UTF-7 sudah usang. |
EventSourceSupport |
Saat diatur ke false , menghapus kode dan logika terkait EventSource. |
Http3Support (.NET 10+) |
Saat diatur ke false , menghapus kode yang terkait dengan dukungan untuk HTTP/3 di System.Net.Http. |
HttpActivityPropagationSupport |
Saat diatur ke false , menghapus kode yang terkait dengan dukungan diagnostik untuk System.Net.Http. |
InvariantGlobalization |
Saat diatur ke true , menghapus kode dan data khusus globalisasi. Untuk mengetahui informasi selengkapnya, lihat Mode Invarian. |
MetadataUpdaterSupport |
Saat diatur ke false , menghapus logika khusus pembaruan metadata yang terkait dengan hot reload. |
MetricsSupport |
Saat diatur ke false , menghapus dukungan untuk System.Diagnostics.Metrics instrumentasi. |
StackTraceSupport (.NET 8+) |
Saat diatur ke false , menghapus dukungan untuk menghasilkan jejak tumpukan (misalnya, Environment.StackTrace atau Exception.ToString) oleh runtime. Jumlah informasi yang dihapus dari string pelacakan tumpukan mungkin bergantung pada opsi penyebaran lainnya. Opsi ini tidak memengaruhi jejak tumpukan yang dihasilkan oleh debugger. |
UseNativeHttpHandler |
Saat diatur ke true , menggunakan implementasi HttpMessageHandler platform default untuk Android dan iOS dan menghapus implementasi terkelola. |
UseSizeOptimizedLinq (.NET 10+) |
Ketika diatur ke true , menghapus beberapa pengoptimalan throughput di LINQ yang berdampak buruk pada ukuran aplikasi. Default ke true dengan PublishAot ; mungkin tidak mungkin untuk mengkompilasi beberapa aplikasi secara asli dengan properti ini diatur ke false . |
UseSystemResourceKeys |
Saat diatur ke true , hapus pesan pengecualian untuk System.* rakitan. Ketika pengecualian dilemparkan dari System.* rakitan, pesan adalah ID sumber daya yang disederhanakan alih-alih pesan lengkap. |
XmlResolverIsNetworkingEnabledByDefault (.NET 8+) |
Saat diatur ke false , menghapus dukungan untuk menyelesaikan URL non-file di System.Xml. Hanya penyelesaian sistem file yang didukung. |
Properti ini menyebabkan kode terkait dipangkas dan juga menonaktifkan fitur melalui file runtimeconfig . Untuk informasi selengkapnya tentang properti ini, termasuk opsi runtimeconfig yang sesuai, lihat sakelar fitur. Beberapa SDK mungkin memiliki nilai default untuk properti ini.
Fitur kerangka kerja dinonaktifkan saat pemangkasan
Fitur berikut tidak kompatibel dengan pemangkasan karena memerlukan kode yang tidak dirujuk secara statis. Fitur-fitur ini dinonaktifkan secara default di aplikasi yang dipangkas.
Peringatan
Aktifkan fitur-fitur ini dengan risiko Anda sendiri. Mereka cenderung memutus aplikasi yang dipangkas tanpa pekerjaan tambahan untuk mempertahankan kode yang direferensikan secara dinamis.
<BuiltInComInteropSupport>
Dukungan COM bawaan dinonaktifkan.
<CustomResourceTypesSupport>
Penggunaan jenis sumber daya kustom tidak didukung. Jalur kode ResourceManager yang menggunakan pantulan untuk jenis sumber daya kustom dipangkas.
<EnableCppCLIHostActivation>
Aktivasi host C++/CLI dinonaktifkan.
<EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization>
DesigntimeLicenseContextSerializer penggunaan
BinaryFormatter
serialisasi dinonaktifkan.<StartupHookSupport>
Menjalankan kode sebelumnya
Main
denganDOTNET_STARTUP_HOOKS
tidak didukung. Untuk informasi selengkapnya, lihat hook startup host.