正如我所理解的那样,.net Framework中的汇编是中间语言文件+一些元数据,清单和其他东西.
CLR将程序集转换为机器代码,可以在给定的本地机器上执行.
这意味着在CLR处理之前,程序集不应该由程序集执行.如果是这样,那为什么它有.exe扩展名,可以在Windows机器上执行?
Ali*_*tad 24
由于Windows需要创建一个进程,并且.exe将要做的第一件事是通过加载mscoree来托管CLR.
从CLR到C#:
Windows检查EXE文件的标头以确定是创建32位进程,64位进程还是WoW64进程后,Windows会将x86,x64或IA64版本的MSCorEE.dll加载到进程的地址空间中.在x86版本的Windows上,可以在C:\ Windows\System32目录中找到x86版本的MSCorEE.dll.在x64或IA64版本的Windows上,可以在C:\ Windows\SysWow64目录中找到x86版本的MSCorEE.dll,而在C:\ Windows \中可以找到64位版本(x64或IA64) System32目录(出于向后兼容性原因).然后,进程的主线程调用MSCorEE.dll中定义的方法.此方法初始化CLR,加载EXE程序集,然后调用其入口点方法(Main).此时,托管应用程序已启动并正在运行.