运行.NET可执行文件时,按顺序逐步完成。我的基本理解是你运行可执行文件,CLR做一些检查,将CIL编译成特定于平台的代码,将其与指定的必需dll一起加载(如清单中所指定)并运行你的程序。 / p>
有人可以详细说明这一点,直到“它为此和那个级别分配内存”?我真的很想知道从双击可执行文件到程序成功运行时发生了什么。
P.S。图表,外部链接欢迎。 : - )
答案 0 :(得分:2)
有一个原因是这些信息不易被访问 - 因为微软已经了解到,一旦你发布任何内容,它突然必须一直保持固定(来源:Raymond Chen's blog的90%)。
ECMA标准可从here获得,但从目录中可能看出它可能无法涵盖您所使用的材料。它当然指定了结构,但可能不是内部实现细节。
对于特定的内部细节,您需要提供至少您感兴趣的.NET Framework的确切版本(我们将忽略其他CLR,例如Mono)和您正在运行的程序的详细信息。
如果您有需要这些详细信息的实际(即调试)原因,请使用windbg启动可执行文件并逐步完成加载过程。 (这也是为了利益而起作用,虽然它可能不那么令人愉快。)
最后,Mono是开源的,因此您可以浏览他们的代码以了解他们如何选择实现它。显然不能保证它与微软实施它们的方式完全相同,但作为一项学术活动要么就足够了。
答案 1 :(得分:2)
一本统治所有人的书:CLR via C#。