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
active
AssemblyLoadContext.- Untuk referensi konfigurasi statis,
active
AssemblyLoadContext adalah instans yang memuat konfigurasi yang dirujuk. - API pilihan membuat
active
AssemblyLoadContext eksplisit. - API lain menyimpulkan
active
AssemblyLoadContext. 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
,active
AssemblyLoadContext memuat rakitan dalam urutan prioritas berikut:- Periksa
cache-by-name
nya. - 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,
active
AssemblyLoadContext memuat rakitan dalam urutan prioritas berikut:- Periksa
cache-by-name
nya. - Muat dari jalur yang ditentukan atau objek perakitan mentah. Jika rakitan baru dimuat, referensi ditambahkan ke
active
AssemblyLoadContext instanscache-by-name
.
- Periksa
Dalam kedua kasus, jika rakitan baru dimuat, maka AppDomain.AssemblyLoad peristiwa akan dinaikkan.