我的假设始终是CLR加载了应用程序域启动时所需的所有DLL.但是,我写了一个让我质疑这个假设的例子.我启动我的应用程序并检查加载了多少个模块.
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());
Run Code Online (Sandbox Code Playgroud)
然后我重复完全相同的代码,我的计数是不同的.附加DLL是C:\ WINNT\system32\version.dll.
我真的很困惑为什么计数会有所不同.
有人可以详细说明CLR正在做什么以及它如何加载这些东西,以及它正在做什么逻辑?