When does the CLR load an assembly in a .NET process?
Is a .NET assembly loaded by the CLR when a class from the assembly is referenced? Or When a class which declares the using namespace from the assembly is loaded? Also having loaded an assembly, does it ever unloads the assembly if it is not used for a long time? It's the JIT compiler that instructs the CLR to load an assembly once it has translated it to machine code which is done on demand and the exact time is not deterministic. As to the second question, once an assembly is loaded into the AppDomain, the only way to unload it is to destroy this AppDomain, there's no other way to unload an