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

能否通过System.Diagnostics.Debugger.Launch()附加Visual Studio Code调试器?

调试Fody插件(MSBuild任务):让System.Diagnostics.Debugger.Launch()弹出完整调试器选项的解决方法
  • 确认MSBuild进程的运行上下文
    Fody作为MSBuild任务运行时,依托的是MSBuild.exe或dotnet build对应的进程。如果系统里只有Visual Studio调试器完成了注册,那Debugger.Launch()自然只会弹出VS选项。要让Rider、VS Code这类调试器也出现在列表里,得先确保它们已经正确注册为系统级调试器。

  • 调整调试触发的时机
    别在Fody插件的构造函数或者初始化阶段调用Debugger.Launch(),把这段代码移到任务执行的核心逻辑里,比如Execute()方法的最开头:

    public override void Execute()
    {
        System.Diagnostics.Debugger.Launch();
        // 你的插件核心逻辑代码
    }
    

    这样能保证调试器触发时,MSBuild任务已经进入执行阶段,进程状态更稳定,也更容易被其他调试器识别到。

  • 手动附着调试器(替代方案)
    如果Debugger.Launch()的选项列表始终受限,直接换手动附着的方式更靠谱:

    1. 在Fody插件的Execute()方法里加一段延迟等待,同时输出当前进程ID:
      public override void Execute()
      {
          var pid = System.Diagnostics.Process.GetCurrentProcess().Id;
          Console.WriteLine($"当前MSBuild进程ID:{pid}");
          System.Threading.Thread.Sleep(10000); // 等待10秒,给你足够时间找进程
          // 原插件逻辑
      }
      
    2. 运行构建命令(比如dotnet build),控制台会打印出进程ID。
    3. 打开你想用的调试器,手动找到对应ID的MSBuild进程并附着上去。
  • 检查系统调试器注册表项
    有些调试器可能没正确注册到系统的调试器列表里,可以手动验证:

    1. 打开注册表编辑器,导航到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
    2. 查看Debugger键值,默认VS的调试器路径是类似"C:\Windows\system32\vsjitdebugger.exe"
    3. 如果要添加其他调试器,可以修改这个键值(操作前记得备份注册表),或者直接用调试器自带的注册工具(比如Rider里就有注册系统调试器的选项)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:42:33