【发布时间】:2014-05-07 19:11:41
【问题描述】:
我有两个项目的 C# VS 2012 解决方案:ProjectA 和 ProjectB。为了简单起见,这两个项目都是控制台应用程序。
ProjectA 需要首先启动,因此它被设置为解决方案的“启动项目”。当我在调试器下使用 F5 运行 ProjectA 时,它需要执行一些操作,之后它应该在同一调试器下启动 ProjectB。所以如果我在 ProjectB 的第一行设置断点,调试器应该会中断。
有什么办法可以做到吗?目前我使用 Process.Start("path_to_projectB.exe") 但需要用类似“Process.StartUnderSameDebugger("path_to_projectB.exe")”的东西替换。我想使用为 ProjectB 启动 ProjectA 的同一个 VS 调试器实例。
请注意,我不想在 Visual Studio 中使用“启动多个项目”选项。如果我这样做,两个控制台应用程序将同时启动(这是不需要的)并在同一个调试器下(这是想要的)。第一个进程必须先执行一些操作才能启动第二个进程,这就是我不能使用这种方法的原因。
当我稍后停止调试器时,两个进程(来自 ProjectA 和 ProjectB 的控制台应用程序)都应该关闭。
【问题讨论】:
-
为什么不直接运行项目A,让它执行准备操作,然后手动调试项目B?
-
因为这个方案涉及到进程间通信。基本上 ProjectA 是 ProjectB 的看门狗,它们不是独立的。在开发中,我需要两个项目在同一个调试器下运行,但 ProjectA 应该是启动 ProjectB 的那个。
-
在 ProjectB 中有一个 Console.ReadLine() 或类似的东西。当 ProjectA 启动 ProjectB 时,附加调试器,然后按 Enter 继续。
-
您需要编写模拟进程间通信的单元测试。然后,您剩下要做的就是证明通信本身是有效的。
-
@Darryl Braaten,我和整个团队都希望自动化,而不是每次都手动附加调试器。
标签: c# debugging visual-studio-2012 process visual-studio-debugging