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

我有两个项目的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的控制台应用程序)。

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

这些选项

  1. 创建一个模拟给定测试场景的unit testing。
  2. 创建项目C,它引用项目或将目标CS文件包含为linked filesAdd Existing Item – > Add (选择下拉add as link ))并复制需要测试的过程。

Visual Studio团队发布了一个Visual Studio扩展,允许自动将子进程附加到当前调试器: 介绍子进程调试电源工具 。

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

它可以在Gallery for Visual Studio 2013及更高版本中找到。

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