假设我们有 .NET Winforms 应用程序或控制台应用程序。 谁能告诉我在启动 WinForm 或控制台应用程序之前会发生什么。我想知道内部结构——比如 EXE 将如何与框架通信、CLR 的作用是什么、在启动应用程序本身时发生异常时会发生什么等...
最佳答案
当您双击 .net .exe 程序集时:
- Windows 的 PE 加载程序启动
- 如果您使用的是 Windows >= Windows XP,它将检测到该可执行文件是托管可执行文件,并通过调用 mscoree.dll 中的 _CoreExeMain 将其转发到 .net(如果您双击托管 .dll,则为 _CoreDllMain) .它可以使用程序集配置文件来了解要使用哪个运行时。
- 如果您使用的是 Windows < Windows XP,.exe 文件包含一小段 native 代码,会跳转到 mscoree.dll 的 _CoreExeMain 或 _CoreDllMain。
- 然后 mscoree.dll 根据全局配置、程序集配置文件等初始化 .net 运行时。
- 然后如果它是一个.exe,它会JIT编译它的入口点方法,并开始执行它。
关于c# - 当用户单击 .NET 程序集 (EXE) 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2788270/