C# 如何在同一个C解决方案中以编程方式从“启动”项目启动第二个项目?

C# 如何在同一个C解决方案中以编程方式从“启动”项目启动第二个项目?,c#,debugging,visual-studio-2012,process,visual-studio-debugging,C#,Debugging,Visual Studio 2012,Process,Visual Studio Debugging,我有两个项目的C VS 2012解决方案:ProjectA和ProjectB。为了简单起见,这两个项目都是控制台应用程序 ProjectA需要首先启动,因此它被设置为解决方案的启动项目。当我在调试器下使用F5运行ProjectA时,它需要执行一些操作,然后在同一调试器下启动ProjectB。所以,若我在ProjectB的第一行设置断点,调试器应该会中断 我有什么办法可以做到这一点吗?目前,我使用Process.Startpath_to_projectB.exe,但需要将其替换为Process.S

我有两个项目的C VS 2012解决方案:ProjectA和ProjectB。为了简单起见,这两个项目都是控制台应用程序

ProjectA需要首先启动,因此它被设置为解决方案的启动项目。当我在调试器下使用F5运行ProjectA时,它需要执行一些操作,然后在同一调试器下启动ProjectB。所以,若我在ProjectB的第一行设置断点,调试器应该会中断

我有什么办法可以做到这一点吗?目前,我使用Process.Startpath_to_projectB.exe,但需要将其替换为Process.StartUnderSameDebuggerpath_to_projectB.exe。我想使用启动ProjectA for ProjectB的VS调试器的同一个实例

请注意,我不想在VisualStudio中使用启动多个项目选项。如果我这样做,两个控制台应用程序将同时启动,这是不需要的,并且在需要的同一个调试器下启动。第一个进程必须先执行一些操作,然后才能启动第二个进程,这就是为什么我不能使用这种方法


另外,当我稍后停止调试器时,ProjectA和ProjectB中的两个进程控制台应用程序都应该关闭。

您可以在第一个项目启动后手动右键单击调试第二个项目-调试器停止时,这两个进程都将结束。

这些选项

创建一个模拟给定测试场景的单元测试。 创建项目C,它引用项目或将目标CS文件包含为链接文件添加现有项->添加选择下拉列表添加为链接,并复制需要测试的流程。
Visual Studio团队已发布Visual Studio扩展,该扩展允许将子进程自动附加到当前调试器:

因此,您可以使用Process.start从ProjectA启动ProjectB,它将自动将调试器附加到第二个进程

它在Visual Studio 2013及更高版本的上提供


您还可以查看我的答案,了解如何将当前调试器附加到您可能启动的任何进程。请注意,它不会像Visual Studio扩展那样即时,因为调试器将在进程启动后附加。

为什么不运行项目A以便它执行其准备操作,然后手动调试项目B?因为此解决方案涉及进程间通信。基本上,ProjectA是ProjectB的看门狗,它们不是独立的。在开发中,我需要两个项目在同一个调试器下运行,但ProjectA应该是启动ProjectB的项目。在ProjectB中,在开始时有一个Console.ReadLine或类似的东西。当ProjectA启动ProjectB时,连接调试器,然后按enter键继续。您需要编写模拟进程间通信的单元测试。然后,你所要做的就是证明通信本身是有效的。@Darryl Braaten,我和整个团队都想自动化它,而不是每次都手动附加调试器。