CLR 是 C# 编译器还是这两个不同的东西?

Is the CLR a C# compiler or are these two different things?

我想了解 C# 代码编译和执行的过程。网站上有很多关于 CLR、CIL、CLS、FCL 等的信息,但我找不到有关谁负责在 CIL 中编译 C# 代码的信息。是CLR还是c#的单独专用编译器?

C# 代码被编译成 CIL 字节码。 VB.NET 等其他语言也可以编译成 CIL 字节码。

一旦代码被编译成 CIL 标准格式,引擎就会 运行 处理它。该引擎是 CLR 或“公共语言运行时”。

可以这样想:天然气可以由从不同地方获取原油的埃克森美孚或瓦莱罗制造。一旦埃克森美孚或瓦莱罗炼油厂将原油转化为天然气,它就可以用于任何发动机设计为 运行 的汽车。

在类比中,埃克森美孚和瓦莱罗炼油厂是“编译器”,将他们的材料转化为通用格式:天然气。 “Gas”是字节码,可以在为其设计的引擎上 运行。 “引擎”是CLR,它实际上可以在输出上使用和运行。