Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Hanterade enheter hittas och laddas med en algoritm som har olika faser.
Alla hanterade sammansättningar utom satellitsammansättningar och WinRT sammansättningar använder samma algoritm.
När läses hanterade sammansättningar in?
Den vanligaste mekanismen för att utlösa en hanterad sammansättningsbelastning är en referens för statisk sammansättning. Dessa referenser infogas av kompilatorn när koden använder en typ som definierats i en annan sammansättning. Dessa sammansättningar laddas in (load-by-name) efter behov av körmiljön. Den exakta tidpunkten för när de statiska sammansättningsreferenserna läses in är ospecificerad. Det kan variera mellan körningsversioner och påverkas av optimeringar som inlining.
Direkt användning av följande API:er utlöser också belastningar:
Algoritm
Följande algoritm beskriver hur körtiden laddar in en hanterad assembly.
activeAssemblyLoadContextFastställ .- För en statisk referens till
activeAssemblyLoadContext är den instans som laddade den refererande sammansättningen. - Önskade API:er gör det
activeAssemblyLoadContext explicit. - Andra API:er härleder
activeAssemblyLoadContext. För dessa API:er används egenskapen AssemblyLoadContext.CurrentContextualReflectionContext . Om dess värde ärnullanvänds den härledda instansen AssemblyLoadContext . - Se tabellen i avsnittet När läses hanterade sammansättningar in?
- För en statisk referens till
För metoderna
Load-by-nameactiveladdar in assemblyn i följande prioritetsordning:- Kontrollera dess
cache-by-name. - Kalla på funktionen AssemblyLoadContext.Load.
- Kontrollera instansens AssemblyLoadContext.Default cacheminne och kör standardlogik för avsökning av hanterad sammansättning . Om en sammansättning nyligen har lästs in läggs en referens till i instansens AssemblyLoadContext.Default
cache-by-name. - Utlysa händelsen AssemblyLoadContext.Resolving för den aktiva AssemblyLoadContext.
- Höj händelsen AppDomain.AssemblyResolve .
- Kontrollera dess
För de andra typerna av laster läser
activeAssemblyLoadContext in sammansättningen i följande prioritetsordning:- Kontrollera dess
cache-by-name. - Om
activeAssemblyLoadContext är AssemblyLoadContext.Default, kör standardlogiken för avsökning av hanterade sammansättningar. - Läs in från den angivna sökvägen eller det råa sammansättningsobjektet. Om en sammansättning nyligen har lästs in läggs en referens i instansens
activeAssemblyLoadContextcache-by-name.
- Kontrollera dess
I båda fallen, om en sammansättning nyligen har lästs in, AppDomain.AssemblyLoad utlöses händelsen.