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.
Assembly terkelola ditempatkan dan dimuat menggunakan algoritma yang memiliki berbagai tahapan.
Semua rakitan terkelola kecuali rakitan satelit dan rakitan WinRT menggunakan algoritma yang sama.
Kapan rakitan terkelola dimuat?
Mekanisme paling umum untuk memicu beban rakitan terkelola adalah referensi perakitan statis. Referensi ini disisipkan oleh pengkompilasi setiap kali kode menggunakan jenis yang ditentukan dalam rakitan lain. Rakitan ini dimuat (load-by-name) sesuai kebutuhan oleh waktu proses. Waktu yang tepat ketika referensi rakitan statis dimuat tidak ditentukan. Ini dapat bervariasi di antara versi runtime dan dipengaruhi oleh pengoptimalan seperti inlining.
Penggunaan langsung API berikut juga akan memicu beban:
Algoritma
Algoritma berikut menjelaskan bagaimana runtime memuat rakitan terkelola.
Tentukan
activeAssemblyLoadContext.- Untuk referensi konfigurasi statis,
activeAssemblyLoadContext adalah instans yang memuat konfigurasi yang dirujuk. - API pilihan membuat
activeAssemblyLoadContext eksplisit. - API lain menyimpulkan
activeAssemblyLoadContext. Untuk API ini, AssemblyLoadContext.CurrentContextualReflectionContext properti digunakan. Jika nilainya adalahnull, maka instans yang disimpulkan AssemblyLoadContext digunakan. - Lihat tabel di bagian Kapan rakitan terkelola dimuat?
- Untuk referensi konfigurasi statis,
Untuk metode
Load-by-name,activeAssemblyLoadContext memuat rakitan dalam urutan prioritas berikut:- Periksa
cache-by-namenya. - Panggil fungsi AssemblyLoadContext.Load.
-
AssemblyLoadContext.Default Periksa cache instans dan jalankan logika pemeriksaan default rakitan terkelola. Jika rakitan baru dimuat, referensi ditambahkan ke AssemblyLoadContext.Default instans
cache-by-name. - Menerbitkan peristiwa AssemblyLoadContext.Resolving untuk AssemblyLoadContext yang aktif.
- Aktifkan AppDomain.AssemblyResolve peristiwa.
- Periksa
Untuk jenis beban lainnya,
activeAssemblyLoadContext memuat rakitan dalam urutan prioritas berikut:- Periksa
cache-by-namenya. -
activeAssemblyLoadContext JikaactiveAssemblyLoadContext adalah AssemblyLoadContext.Default, jalankan logika pemeriksaan default untuk rakitan terkelola. - Muat dari jalur yang ditentukan atau objek perakitan mentah. Jika rakitan baru dimuat, referensi ditambahkan ke
activeAssemblyLoadContext instanscache-by-name.
- Periksa
Dalam kedua kasus, jika rakitan baru dimuat, maka AppDomain.AssemblyLoad peristiwa akan dinaikkan.