托管应用程序如何运行

时间:2013-06-10 10:16:11

标签: .net clr jit

我正在学习.NET框架编程模型。

当运行托管exe(因此没有机器代码)时,CLR(mscorlib.dll)如何接管并执行JIT编译,或者谁调用CLR或者它是否一直在运行?

2 个答案:

答案 0 :(得分:2)

检查that question,其关联的问题也很好。

顺便说一下,mscorlib.dll不是CLR,它只包含基本的托管类型(参见that question)。

答案 1 :(得分:1)

托管可执行文件仍包含标准Portable Executable (link)*标头,其中包含以下信息:

  • 它是什么类型的模块,
  • 模块创建时间戳,
  • CPU架构(32/64),
  • _CorExeMain()(或_CorDLLMain())函数的入口点内存地址

启动任何应用程序时,窗口会读取PE标头 - 在.NET应用程序的情况下,标头将其标识为托管程序集,然后将执行转移到CLR。


*请参阅:.NET,元数据和PE格式部分