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

本文关键字:启动 项目 同一个 解决方案 方式 编程 第二个 | 更新日期: 2023-09-27 18:02:09

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

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

我有什么办法可以做到吗?目前我使用Process.Start("path_to_projectB.exe"),但需要替换为类似"Process.StartUnderSameDebugger("path_to_projectB.exe")"的东西。我想使用启动ProjectA的VS调试器的相同实例。

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

当我后来停止调试器时,两个进程(来自ProjectA和ProjectB的控制台应用程序)应该关闭。

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

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

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

可在Visual Studio 2013及以上版本的图库中使用。

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

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

这些选项

  1. 创建一个模拟给定测试场景的单元测试。
  2. 创建项目C,该项目可以引用项目或包含目标CS文件linked files (Add Existing Item -> Add(选择下拉的add as link)),并复制需要测试的过程。