我阅读了C#程序的编译需要两个步骤。

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

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

最佳答案

你是对的。 .NET DLL和EXE(在.NET中称为程序集)是包含MSIL的文件。 DLL可以具有.NET以外的其他格式,这就是.NET程序集具有使它们可被识别的标头的原因。您可以使用corflags.exe检查DLL / EXE是否为.NET DLL / EXE。

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

10-07 20:28