MSIL源代码的编译器在哪里驻留在.NET Framework中?

我有一个关于.NET Framework的问题:MSIL源代码的编译器在哪里? 它是在CLR本身还是在任何其他层? 另外,请给我一个非常小(但足够)的.NET Framework插图。

[ .NET框架[1]

这是一个快速的流程图(未遵循的符号),将澄清其中的大部分内容。

在此处输入图像描述

C#或VB编译器只是将代码(托管)转换为CLR可理解的IL 的工具 。 使用Visual Studio编译时,这些工具可以正常工作。

JIT(JIT编译)是CLR的一个特性,它在运行时将IL代码转换为最终执行的机器代码。 这就是为什么有时候,在高层次上,我们说CLR会进行IL-to-Machine代码转换。

来自维基百科 ;

CIL程序集和指令由编译器或 执行环境附带的 名为IL Assembler(ILAsm)的实用程序生成。

也可以使用IL反汇编程序(ILDASM)将已组装的CIL再次拆分为代码。 还有其他工具,如.NET Reflector,可以将CIL反编译为高级语言(例如C#或Visual Basic)。 这使得CIL成为逆向工程的一个非常容易的目标。 此特征与Java字节码共享。 但是,有些工具可以对代码进行模糊处理,并且可以使代码无法轻松读取但仍可运行。