Yönetilen derleme yükleme algoritması
Yönetilen derlemeler, çeşitli aşamalara sahip bir algoritma ile bulunur ve yüklenir.
Uydu derlemeleri ve WinRT
derlemeler dışındaki tüm yönetilen derlemeler aynı algoritmayı kullanır.
Yönetilen derlemeler ne zaman yüklenir?
Yönetilen derleme yükünü tetiklemenin en yaygın mekanizması statik derleme başvurusudur. Bu başvurular, kod başka bir derlemede tanımlanan bir tür kullandığında derleyici tarafından eklenir. Bu derlemeler çalışma zamanı tarafından gerektiğinde yüklenir (load-by-name
). Statik derleme başvurularının ne zaman yüklendiğinin tam zamanlaması belirtilmez. Çalışma zamanı sürümleri arasında farklılık gösterebilir ve inlining gibi iyileştirmelerden etkilenir.
Aşağıdaki API'lerin doğrudan kullanımı yükleri de tetikler:
Algoritma
Aşağıdaki algoritma, çalışma zamanının yönetilen derlemeyi nasıl yüklediği açıklanmaktadır.
öğesini
active
AssemblyLoadContextbelirleyin.- Statik derleme başvurusu için,
active
AssemblyLoadContext başvuruda bulunan derlemeyi yükleyen örnektir. - Tercih edilen API'ler açık
active
AssemblyLoadContext hale getirir. - Diğer API'ler öğesini çıkarsar
active
AssemblyLoadContext. Bu API'ler AssemblyLoadContext.CurrentContextualReflectionContext için özelliği kullanılır. Değeri isenull
, çıkarsanan AssemblyLoadContext örnek kullanılır. - Yönetilen derlemeler ne zaman yüklenir? bölümündeki tabloya bakın.
- Statik derleme başvurusu için,
Load-by-name
yöntemler için,active
AssemblyLoadContext derlemeyi aşağıdaki öncelik sırasına göre yükler:- öğesini
cache-by-name
denetleyin. - işlevini çağırın AssemblyLoadContext.Load .
- Örneğin önbelleğini AssemblyLoadContext.Default denetleyin ve yönetilen derleme varsayılan yoklama mantığını çalıştırın. Bir derleme yeni yüklenirse, örneğine AssemblyLoadContext.Default
cache-by-name
bir başvuru eklenir. - AssemblyLoadContext.Resolving Etkin AssemblyLoadContext için olayı tetikler.
- Olayı yükseltin AppDomain.AssemblyResolve .
- öğesini
Diğer yük türleri için,
active
AssemblyLoadContext derlemeyi aşağıdaki öncelik sırasına göre yükler:- öğesini
cache-by-name
denetleyin. - Belirtilen yoldan veya ham derleme nesnesinden yükleyin. Bir derleme yeni yüklenirse, örneğine
active
AssemblyLoadContextcache-by-name
bir başvuru eklenir.
- öğesini
Her iki durumda da, bir derleme yeni yüklenirse AppDomain.AssemblyLoad olay oluşturulur.