c# - 对 MSIL 感到困惑

标签 c# .net cil

我看过的c#程序编译需要两个步骤。

首先它生成 MSIL,然后生成机器代码。所以我很想看看第一阶段编译(MSIL)生成的文件。

我一直认为 DLL 文件是包含 MSIL 代码的文件,但我认为我错了。

最佳答案

你说的对。 .NET DLL 和 EXE(在 .NET 中称为程序集)是包含 MSIL 的。 DLL 可以具有不同于 .NET 的格式,这就是为什么 .NET 程序集有一个标题,使它们可以被识别。您可以使用 corflags.exe检查 DLL/EXE 是否为 .NET DLL/EXE。

汇编中的 IL 代码由 CLR(公共(public)语言运行时)解释,并将其翻译成机器代码。您实际上看不到该步骤,因为它是由 JIT'ter 在运行时完成的(或者您应该使用 ngen.exe 预编译程序集并读取生成的文件)。

关于c# - 对 MSIL 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28273326/

相关文章:

c# - 为什么 DbParameterCollection 中的三个属性在引用程序集中是抽象的,而在其他情况下是虚拟的?

c# - 定期更改基础 EF 模型的最佳替代方案

c# - LINQPad 在我的类型化数据上下文中调用 dispose

c# - BackgroundWorker 不报告进度的问题

c# - 无效的符号种类 : NamedType

c# - 无法使用 C# ConfigurationManager

c# - 为什么不能将 Action<Object> 委托(delegate)用作线程池的 WaitCallback?

.net - 使用 DLR(主要)进行静态语言编译

.net - 为什么在调试/反汇编期间我不能进入调用指令?

c# - 将内部类更改为公共(public)类(CIL、Mono.Cecil)