【问题标题】:Can Roslyn compile C# to CILRoslyn 可以将 C# 编译为 CIL
【发布时间】:2017-07-19 12:17:01
【问题描述】:

可以使用 Roslyn C# 编译器将 C# 编译为 CIL 人类可读的代码吗?就像这里显示的例子:https://en.wikipedia.org/wiki/Common_Intermediate_Language

我知道它可以生成 EXE/DLL 形式的字节码,但我对 CIL 代码感兴趣。

通过命令行或 API。

我知道可以对字节码文件使用反汇编程序,但我更喜欢更直接的方法。

谢谢。

【问题讨论】:

  • .Net 和 .net 核心需要一个 clr。因此他们需要一个 il。当您构建 dll 或 exe 时,编译器会将您的代码转换为 msil(Microsoft 中间语言)。您可以使用IL DASM 等工具查看此内容。
  • 为什么不使用 ILdasm ?
  • 我不想使用反汇编程序——只是看起来太复杂了——我认为编译器会在内部某个地方拥有我想要直接访问的 MSIL
  • 不,它不以任何中间形式维护 IL。字节码由ILBuilder 类直接发出。最简单的解决方案在生成代码后对其进行反汇编。
  • @JeroenMostert 你想把它作为一个 asnwer 发布吗?

标签: c# roslyn


【解决方案1】:

只需调用 ildasm.exe 作为您的构建后步骤。解决方案应该是可组合的步骤,而不是一个单一的怪物。

【讨论】:

    【解决方案2】:

    SharpLab 可以即时将 C#、Visual Basic 或 F# 转换为多种格式,其中一种是 CIL。

    它使用 Roslyn 存储库中的 Roslyn 来执行此操作,您可以选择要使用的版本。

    它不是扩展/命令行工具/API,但它可能对任何试图轻松查看 CIL 的人非常有用。

    【讨论】:

      【解决方案3】:

      C# 会自动编译为 CIL。那就是目标平台。 (*不确定 .NET Native/UWP)。

      在我看来,您的目标是显示生成的 CIL 代码,请查看 Msiler

      如果你偶然使用 Resharper,there is an IL-Viewer included

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-20
        • 2018-02-14
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        相关资源
        最近更新 更多