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

DotPeek开启显示编译器生成代码后仍无法查看异步状态机代码求助

解决DotPeek查看async/await编译器生成状态机的问题

我来帮你梳理下这个问题的解决思路,结合DotPeek的反编译逻辑,你遇到的情况其实是它的默认行为导致的,以下是具体的排查和解决步骤:

1. 正确找到编译器生成的状态机类

DotPeek默认会把编译器生成的async/await状态机反还原成原始的async/await语法,所以直接打开SomeClassWithAwait类看到的是你写的原始代码,这是正常的。你需要:

  • 在Assembly Explorer里展开你的类库程序集,找到SomeClassWithAwait类下面的嵌套类(通常命名格式是SomeClassWithAwait+<MethodAsync>d__0,具体数字可能不同)
  • 双击这个嵌套类,就能看到编译器生成的完整状态机代码了

2. 调整反编译设置,强制不还原async/await语法

如果你希望在查看原方法时直接看到状态机代码,而不是还原后的async/await,可以修改DotPeek的设置:

  • 点击顶部菜单的File > Settings(或者按Ctrl+Alt+S)
  • 切换到Decompiler选项卡
  • 找到Async/Await相关的设置,取消勾选类似Restore async/await syntax(还原async/await语法)的选项
  • 点击Apply后,重新反编译你的类,此时打开MethodAsync方法就能看到状态机的代码了

3. 清理DotPeek缓存,确保设置生效

有时候旧的反编译缓存会导致新设置不生效,你可以:

  • 点击File > Clear Cache
  • 等待缓存清理完成后,重新加载你的类库程序集,再尝试查看代码

4. 确认加载的是最新编译的程序集

确保你在DotPeek中加载的是你重新编译后的dll文件:

  • 右键Assembly Explorer中的程序集,选择Reload Assembly
  • 确认路径指向的是最新编译生成的dll(比如bin/Debug或bin/Release下的最新文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:52:54