如何将 .NET Core C# 项目编译为原始 IL 代码?

How to compile a .NET Core C# project to raw IL code?

提问人:boooba 提问时间:7/9/2022 更新时间:7/10/2022 访问量:205

问:

我正在尝试设置一个输出原始 IL 代码而不是 .EXE 的 C# 项目。输出文件应如下所示:

IL_0000:  nop         
IL_0001:  ldc.i4.5    
IL_0002:  stloc.0     // a
IL_0003:  ldc.i4.s    18 
IL_0005:  stloc.1     // b
IL_0006:  ldstr       "{0} * {1} = {2}"
IL_000B:  ldloc.0     // a
IL_000C:  box         System.Int32
IL_0011:  ldloc.1     // b
IL_0012:  box         System.Int32
IL_0017:  ldloc.0     // a
IL_0018:  ldloc.1     // b
IL_0019:  mul         
IL_001A:  box         System.Int32
IL_001F:  call        System.Console.WriteLine
IL_0024:  nop         
IL_0025:  ret

...或者是可以直接解释(或 JIT-ed)的原始二进制 IL 操作码。我对任何一种选择都很好。我尝试使用 ,但是,它说 .EXE 文件没有有效的 CLR 标头。我怀疑它不支持 .NET Core 可执行文件,但我可能错了。ildasmildasm

C# .net-core 生成 CIL 中间语言

评论

0赞 ExplodatedFaces 7/9/2022
为此,使用 ILSpy 可能会有更多的运气,刚刚从 .net Core(最新版本)打开了一个二进制文件,它运行良好。GitHub

答:

1赞 epeshk 7/10/2022 #1

尝试在 Rider 或在线 SharpLab 中使用 ILSpydnSpydotPeek、IL Viewer。

如果应用程序面向 .NET Core/5/6/7,则应反编译,而不是反编译,因为在大多数情况下,这只是一个启动器,没有任何托管代码。App.dllApp.exe.exe