Como as DLLs são carregadas pelo CLR?

Minha suposição era sempre que o CLR carregava todas as DLLs necessárias na inicialização do domínio do aplicativo. No entanto, escrevi um exemplo que me faz questionar essa suposição. Inicio o aplicativo e verifico quantos módulos estão carregados.

Process[] ObjModulesList;
ProcessModuleCollection ObjModulesOrig;

//Get all modules inside the process
ObjModulesList = Process.GetProcessesByName("MyProcessName");
// Populate the module collection.
ObjModulesOrig = ObjModulesList[0].Modules;

Console.WriteLine(ObjModulesOrig.Count.ToString());

Em seguida, repito exatamente o mesmo código e minha contagem é diferente. A DLL adicional é C: \ WINNT \ system32 \ version.dll.

Estou realmente confuso sobre por que as contagens seriam diferentes.

Alguém poderia, por favor, elaborar o que o CLR está fazendo e como está carregando isso, e por que lógica está fazendo isso?

questionAnswers(4)

yourAnswerToTheQuestion