我希望能够自动附加一个调试器,例如: System.Diagnostics.Debugger.Launch(),除了当前进程到另一个命名进程.我有一个进程名称和PID来识别其他进程.
这可能吗?
我有一个包含多个启动项目的解决方案,我试图在每晚自动重新启动其中一个,同时保持新进程连接到同一个调试器.
我能够重新启动进程(使用Process.Start)并将当前调试器附加到它,但到目前为止它还不是很可靠,并且按照设计,单击"停止"按钮只会从进程中分离而不是终止它.
我知道Visual Studio团队已经发布了一个Visual Studio扩展,允许自动将子进程附加到当前调试器,这可能比我的代码更好,但它不可移植,因为它需要本地配置.
实现我需要的最简单的方法似乎是使用IDE本身以编程方式重新启动项目,就像我手动右键单击项目并选择Debug> Start New Instance一样.我可以在我的代码中访问相关的DTE对象(在开发中).
因此,有没有办法使下面的伪代码工作,要求Visual Studio 通过将其作为命令参数传递来开始调试特定项目/ exe?
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance", "ProjectToBeRestarted");
DTE.ExecuteCommand("Debug.Start", "ProjectToBeRestarted");
DTE.ExecuteCommand("Debug.Start", "ProjectToBeRestarted.exe");
Run Code Online (Sandbox Code Playgroud)
我想尽可能避免操纵UI(比如存储原始启动项目,设置新项目,以及恢复启动项目).