.net编译器为编译代码而执行的过程是什么?

时间:2016-09-01 21:07:16

标签: c# .net compilation clr jit

首先我要说的是,我不确定这是否是发布此类问题的最佳堆栈交换网站,但我不确定哪种方式最适合。无论如何,问题标题说我想知道.net编译器在将我的C#代码转换为机器语言时所执行的步骤。我观看了一些视频,但是有些东西我还是不太了解。我将把我的所有问题留在最底层,我会尽量做到尽可能具体。

这是我对.net编译器如何工作的理解

我的C#代码 - > IL - > JIT - >汇编代码

  1. "我的C#代码"的确切术语是什么? ?
  2. CLR在这里有什么用处?
  3. 整个过程是由CLR处理还是在哪里进行?
  4. 什么是元数据?
  5. 在从第1步到第2步以及从第2步到第3步的转换之间是否还有其他问题,或者只是某些代码被转换为较低级别的语言?

1 个答案:

答案 0 :(得分:2)

  1. 只是C#(C# - > Roslyn(或csc) - > IL - > JIT - >原生)
  2. CLR是读取你的IL,JIT并保存GC的原因(以及更多与此问题无关的内容)
  3. CLR仅运行已编译的代码。 C#编译是通过普通编译器(csc.exe,但现在Roslyn弃用)完成的。
  4. There are plenty of examples that state what Metadata is
  5. 这些步骤中有很多内容,但这是主要流程。