在Visual Studio中一键运行多个实例

56

我想知道是否可以通过简单的点击或设置一个键来在调试模式下运行多个实例(现在是两个实例)我的应用程序...


不,你不能从Visual Studio运行多个应用程序实例。例如,“编辑并继续”这样的功能只能在单个实例中工作。但是,你可以从Visual Studio之外运行多个实例,但会失去一些高级功能。 - Cody Gray
我可以在同一个VS环境中运行多个应用程序实例并对其进行调试。 我只想知道是否可以通过按键或单击按钮来完成。 - MCA
我猜你是在说像这个讨论链接里提到的那样吗?更具体地说,你手动运行多个实例,然后附加调试器吗?不,没有自动化的解决方案来做这个;这不是一个常见的用例。尝试编写一个宏。 - Cody Gray
是的,我已经阅读了那个帖子,那就是我运行多个实例的方式。我只是想知道是否有一种简单的一键方式来做到这一点...我猜没有。谢谢。 - MCA
正如我之前提到的,我认为创建一个简单的宏可能适合你。我不能将其转化为完整的答案,因为我自己从未这样做过,而且我也不确定它是否有效。但是这似乎是用宏解决的理想候选人。在MSDN上阅读更多相关信息:http://msdn.microsoft.com/en-us/library/b4c73967.aspx。 - Cody Gray
4个回答

130

很少有人知道这一点,但这是完全可能的,虽然我承认这并不是很明显。

  • 假设您当前的项目是A,并且它的输出位于c:\bin\my.exe处
  • 为A的解决方案添加一个空项目,称之为“Dummy”
  • 在Dummy项目的属性->调试下,将命令设置为指向c:\bin\my.exe
  • 解决方案属性->配置管理器下,取消选中Dummy项目的所有构建,以便VS不会尝试构建它(构建空项目会失败)
  • 解决方案属性->启动项目下,选择多个启动项目并将A和Dummy的操作设置为启动
  • 现在按F5,您的exe将在两个单独的调试实例下启动。(正如您将能够在调试->查看->进程窗口中看到的那样)

3
好的回答!顺便说一下,在VS2010中,我需要设置“项目属性|调试|启动操作|启动外部程序”,以及“项目属性|调试|启动选项|工作目录”。 - Erik Vullings
1
太棒了。奇妙极了。简单而且正好能满足需求。 - Suma
1
不客气:] 当我想要同时调试客户端/服务器应用程序时,我偶然发现了这个。对于这种情况,这个工作流程非常棒:一个源代码窗口显示客户端代码,旁边是一个显示服务器代码的窗口,可以轻松进行逐步调试。 - stijn
兄弟,你太棒了。 - Ashwin Balani
不错!我想运行两个实例的测试程序,以测试一个库。我使用了该库项目代替虚拟项目,并将其调试命令设置为“$(ProjectDir)test$(Platform)$(Configuration)\test.exe”,这样两个测试程序实例都可以使用所选的配置和平台。 - yoyo
如果你的目标平台不是Windows,而且你没有一个.exe文件,那该怎么办呢?比如说Xamarin或者MAUI应用程序,或者一个Web应用程序... - Windgate

10

您可以使用“多重启动项目”功能,但避免手动创建虚拟项目:直接将要调试的可执行文件添加到解决方案中即可:

  • 解决方案 > 添加现有项目 > .exe 文件路径

如果需要多个实例,Visual Studio 不允许您添加相同的可执行文件,但使用另一个名称为其添加符号链接会如预期工作。

MSDN: 如何:调试不在 Visual Studio 解决方案中的可执行文件


1
这太聪明了!! - stijn
2
希望这个能够运行,但是出现了以下信息:“该解决方案已经包含了一个名为 'A.B.C' 的项目。” - ShloEmi
如果你的目标平台不是Windows,而且你没有一个.exe文件,那该怎么办呢?比如说Xamarin或者MAUI应用程序,或者一个Web应用程序... - Windgate

2

如果使用Visual Studio 2013,这将变得更加容易!

项目->属性->调试->勾选"启动外部程序"并点击...按钮,导航到其他程序的.exe文件。

然后确保在您的解决方案->属性->多个启动项目中进行了勾选。


如果你的目标平台不是Windows,而且你没有.exe文件,那该怎么办?例如Xamarin或MAUI应用程序或Web应用程序... - Windgate

-2
您可以从建立应用程序的位置运行两个实例,例如:d:\test\bin\debug\app.exe,并将这两个实例附加到Visual Studio 2010调试器中。

1
这是可能的,但这并不能回答这个问题,因为这不是“一个简单的点击或设置一个键”。此外,在应用程序运行后附加调试器有时是不够的,因为这样你会错过应用程序初始化的过程。 - Suma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接