C#编译过程

1.c#将代码第一次编译成MSIL和元数据,这两个数据同事存在.exe或.dll文件中,这种伪代码是独立于任何CPU的,所以只要有.NetFrameWork的机器就可以运行,增强了c#的可移植性。

2.程序执行时,IL被CLR捕获,CLR激活内部的JIT编译器,将伪代码编译成针对特定CPU的机器语言。

JIT:即时编译,在代码需要运行的时候才将对应的IL编译为本机指令,然后把结果保存到(GAC)用于将来对同一方法的调用(程序运行起来后,同一段代码只需要编译一次)。(AOT即提前编译,可以生成被直接执行的二进制代码,运行速度快、执行性能表现好,但每次执行前都需要提前编译,开发测试效率低。并且不支持dll直接热更,所以才有xlua等il注入的方式热更)

GAC:全局程序集缓存,.NET应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就直接使用,不用再编译。

编译过程:

 

posted @ 2023-03-23 11:53  mc宇少  阅读(261)  评论(0编辑  收藏  举报