You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取C#方法最终的x86/x64汇编代码?无需Visual Studio调试

无需调试单步提取C#方法的x86/x64汇编代码的方法

嘿,我有几个实用的办法可以帮你不用调试单步就能拿到C#方法的最终x86/x64汇编代码,亲测好用:

方法1:利用Visual Studio的内置生成功能

这是最省心的本地方案,不用额外工具:

  • 右键你的C#项目,选择「属性」→「生成」→「高级」
  • 在弹出的窗口里勾选「生成反汇编代码」,还可以根据需要勾选「包含源代码」「包含IL代码」来让汇编文件更易读
  • 重新编译项目,在输出目录(比如bin/Debug/net6.0)里会生成和程序集同名的.asm文件,打开就能看到对应架构的汇编代码,每一行汇编还会对应标注C#源代码,一目了然

方法2:用RyuJIT的JitDump功能直接输出汇编

这个方法可以拿到JIT实时编译后的最终汇编(毕竟C#是JIT编译的,发布版和调试版的汇编可能有差异):

  • 设置环境变量:
    • 如果你想查看特定方法MyApp.MyClass.MyMethod的汇编,设置COMPlus_JitDump=MyApp.MyClass.MyMethod
    • 如果想输出所有方法的汇编,设置COMPlus_JitDump=*
  • 运行你的C#程序(控制台程序直接在命令行跑,桌面程序正常启动即可),RyuJIT会把指定方法的汇编代码输出到控制台或者日志文件里
  • 注意:这个方法需要你的程序基于.NET Core/.NET 5+,如果是.NET Framework,对应的环境变量是COMPLUS_JitDump(大小写有区别)

方法3:用dnSpy直接查看汇编

dnSpy是一款强大的.NET反编译工具,无需调试就能查看JIT后的汇编:

  • 打开dnSpy,加载你的编译后的程序集(.dll或.exe)
  • 在左侧导航栏找到你要查看的方法,右键点击选择「查看」→「反汇编」
  • 在弹出的窗口里,你可以切换x86/x64架构(如果程序支持),直接看到对应方法的最终汇编代码,还能对比IL代码和C#代码

方法4:通过dotnet dump分析运行中的程序

如果你的程序已经在运行,不想中断它,这个方法很合适:

  • 先安装dotnet dump工具:dotnet tool install -g dotnet-dump
  • 找到运行中程序的进程ID(可以用任务管理器或者dotnet ps命令)
  • 生成dump文件:dotnet dump collect -p <进程ID>
  • 进入dump分析模式:dotnet dump analyze <dump文件名>
  • 在分析命令行里输入!dumpjit <方法的元数据令牌>或者!name2ee <程序集名> <方法全名>找到方法后,再用!dumpjit输出汇编代码

内容的提问来源于stack exchange,提问作者tgiphil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:40:45