我是 .NET C# 编程的新手。我正在关注几本书。据说不是将 C# 代码直接编译为机器代码,而是将其转换为中间语言(称为 MSIL 又名 CIL)。但是当我编译时,我得到一个 exe/dll 文件。

  • 这些 exe/dll 文件中是否包含此 MSIL/CIL?
  • 我想看看那个中间语言代码,只是为了感受一下它的存在。我该如何查看?
  • 他们称这个 exe/dll 文件为 assembly 。他们使用这个“花哨的词”只是为了将它们与包含 native /机器代码的 exe/dll 文件区分开来吗?
  • 最佳答案

  • 是的,更确切地说是在 PE file.text 部分(便携式可执行文件 = *.exe 或 *.dll)。更多信息可以在 here 中找到。
  • 最好的选择是使用 ILSpy(反射器不再免费)。它是一个免费的反汇编程序,可以将您的程序集反汇编为 MSIL 以及 C#、VB(在某种程度上)。 .NET Framework SDK 包含 ILDasm,它是官方的 MSIL 反汇编程序。
  • 基本上是的。程序集是包含 MSIL 代码和相应元数据的文件。这不仅限于 PE 文件本身,而是所有当前的 CLR 实现都使用它们。

  • 如果我也可以推荐一本关于这方面的好书,那就是 Serge Lidin 的 Expert .NET 2.0 IL Assembler。他是设计 MSIL 的人。

    关于c# - 如何查看 C# 编译器生成的 MSIL/CIL?为什么叫汇编?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3326571/

    10-13 01:28