用户单击.NET程序集(EXE)时会发生什么?

Sat*_*ish 17 .net c#

考虑我们有.NET Winforms应用程序或控制台应用程序.任何人都可以告诉我在WinForm或控制台应用程序启动之前会一步一步发生什么.我想知道内部结构 - 比如EXE将如何与Framework通信,CLR的作用是什么,以及在启动应用程序本身时发生异常时会发生什么.等等...

Jb *_*ain 13

双击.net .exe程序集时:

  • Windows的PE装载机开始运转
  • 如果您使用的是Windows> = Windows XP,它将检测到可执行文件是托管可执行文件,并通过调用mscoree.dll中的_CoreExeMain将其转发到.net(如果双击托管的.dll,则为_CoreDllMain).它可以使用程序集配置文件来了解要使用的运行时.
  • 如果您使用的是Windows <Windows XP,则.exe文件包含一小段本机代码,它将跳转到mscoree.dll的_CoreExeMain或_CoreDllMain.
  • 然后mscoree.dll初始化.net运行时,具体取决于全局配置,程序集配置文件以及不支持的内容.
  • 然后,如果它是.exe,它将JIT编译其入口点方法,并开始执行它.