在.NET中是否在运行时按需加载引用的DLL?或者它们都是在开始时加载的。我问,因为在附加Visual Studio运行我的项目时,我注意到它正在为开始时引用的每个DLL加载符号。
这只是因为我在使用VS附带的调试中运行吗?
答案 0 :(得分:1)
您可以在没有连接VS的情况下运行时使用Procmon(进程监视器)进行自我检查。在我的脑海中,我记得当JIT编译器第一次遇到类型时它们会按需加载。实际上,我使用混合解决方案(托管和非托管程序集),当缺少非托管dll时,首次需要来自该程序集的类型时会出现错误;在VS上运行时,我甚至得到了调用堆栈。但我从未在外面检查过VS.至于背后的理论,this question中有一个很长的解释。