能否通过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()的选项列表始终受限,直接换手动附着的方式更靠谱:- 在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秒,给你足够时间找进程 // 原插件逻辑 } - 运行构建命令(比如
dotnet build),控制台会打印出进程ID。 - 打开你想用的调试器,手动找到对应ID的MSBuild进程并附着上去。
- 在Fody插件的
检查系统调试器注册表项
有些调试器可能没正确注册到系统的调试器列表里,可以手动验证:- 打开注册表编辑器,导航到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug - 查看
Debugger键值,默认VS的调试器路径是类似"C:\Windows\system32\vsjitdebugger.exe" - 如果要添加其他调试器,可以修改这个键值(操作前记得备份注册表),或者直接用调试器自带的注册工具(比如Rider里就有注册系统调试器的选项)
- 打开注册表编辑器,导航到
内容的提问来源于stack exchange,提问作者Romain Hautefeuille
相关产品推荐
相关产品推荐

