Comment les DLL sont-elles chargées par le CLR?

Mon idée a toujours été que le CLR chargé toutes les Dll nécessaires au démarrage du domaine de l'application. Cependant, j'ai écrit un exemple qui me fait douter de cette hypothèse. Je lance mon application et vérifier pour voir comment de nombreux modules sont chargés.

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());

Je puis répétez exactement le même code et mon compte est différent. La DLL est C:\WINNT\system32\version.dll.

Je suis vraiment confus quant à pourquoi le compte serait différent.

Quelqu'un pourrait-il donner des précisions sur ce que le CLR est fait et comment il le chargement de ces choses, et en ce que la logique c'est de le faire?

source d'informationauteur priehl