我读了c#程序编译需要两个步骤。
首先,它生成 MSIL,然后生成机器代码。所以我很好奇地看到第一阶段编译(MSIL)生成的文件。
我一直认为DLL文件是包含MSIL代码的文件,但我认为我错了。
DLL 和 EXE(在 .NET 中称为程序集)是包含 MSIL 的。DLL 可以具有与 .NET 格式不同的格式,因此这就是为什么 .NET 程序集具有使它们可识别的标头的原因。您可以使用corflags.exe
来检查 DLL/EXE 是否为 .NET DLL/EXE。
程序集中的 IL 代码由 CLR(公共语言运行库)解释,CLR 将其转换为机器代码。实际上看不到该步骤,因为它是由 JIT'ter 在运行时完成的(或者您应该使用 ngen.exe
预编译程序集并读取生成的文件)。
net有多种语言(C#,VB.net 等)。
编译 C# 项目库时,它会输出包含IL
代码的 dll。
就像 VB.net 编译为 IL 一样,因此您可以在两种语言之间"混合"代码。
此 IL 在运行时使用 JIT 编译器编译为机器代码(阅读有关 CLR 的信息)。
可以通过使用反射器和反射 dll 来查看 IL 代码。
在此处阅读更多内容。