首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当用户单击.NET程序集(EXE)时会发生什么?

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

Stack Overflow用户
提问于 2010-05-07 19:48:15
回答 2查看 2.7K关注 0票数 18

假设我们有.NET Winforms应用程序或控制台应用程序。有人能告诉我在WinForm或控制台应用程序启动之前会发生什么吗?我想知道内部机制--比如EXE如何与框架通信,CLR的作用是什么,在启动应用程序itself.etc时如果发生异常会发生什么……

EN

回答 2

Stack Overflow用户

发布于 2012-08-16 18:14:36

MSCoreEE.dll (MSCore Execution Engine.Dll only one instance for one machine)表示,例如当双击或启动.Net程序集/ .exe时,OS将加载windows加载器,windows加载器将依次加载PE报头(可移植可执行文件)[在win32可执行文件的情况下,PE报头将包含引导程序(静态Main())的地址,其中如在.Net中,引导程序将包含MSCoreEE.Dll的地址,该地址将出现在C:\Windows\System32\mscoree.dll中,该地址将被执行并加载.Net运行时,.net程序集将针对该运行时进行加载。可以在计算机上安装多个版本的.Net运行时,但是,将只有一个mscoreee.dll实例来加载特定的运行时。

CLR将自己创建第一个应用程序域并加载程序集(如果程序集没有在代码中创建其他应用程序域)

CLR在内部创建3个应用程序域1.系统应用程序域a.负责加载共享和默认应用程序域,还将mscorelib.dll加载到共享应用程序域b.Create 3分离异常的实例i.致命引擎异常2.堆栈溢出异常iii。内存不足异常(非常重要的是,当开发者认为应用程序可能内存不足并想要将该异常写入日志文件时,会发生内存不足异常,因为没有剩余的内存来创建该异常的新实例,因此,CLR预先创建了该异常以供将来在应用程序中使用2.共享应用程序域a.包含mscorlib.dll b.由其他应用程序域使用的其它通用库c.然而,开发人员不能将定制的Dll推入共享应用程序域,因为它不能从CLR的外部控制,CLR托管这些dll,并且CLR本身无法控制开发人员如何托管它,但是可以使用一些COM接口,开发人员可以在其中托管CLR习惯3.默认应用程序域a.所有用户都二进制.exe,dll在此处加载

票数 2
EN

Stack Overflow用户

发布于 2010-05-07 19:58:51

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2788270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档