如何以相同的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的控制台应用程序)。
在第一个项目启动后,您始终可以手动右键单击调试第二个项目 – 两个项目都将在调试器停止时结束。
这些选项
- 创建一个模拟给定测试场景的unit testing。
- 创建项目C,它引用项目或将目标CS文件包含为
linked files
(Add Existing Item
– >Add
(选择下拉add as link
))并复制需要测试的过程。
Visual Studio团队发布了一个Visual Studio扩展,允许自动将子进程附加到当前调试器: 介绍子进程调试电源工具 。
因此,您可以使用Process.Start
从ProjectA
启动ProjectB
,它会自动将调试器附加到第二个进程。
它可以在Gallery for Visual Studio 2013及更高版本中找到。
您还可以在此处查看我的答案,了解如何将当前调试器附加到您可能启动的任何进程。 请注意,它不会像Visual Studio扩展那样立即生效,因为调试器将在进程启动后附加。