通过Visual Studio中的不同解决方案进行调试

时间:2010-03-12 22:09:43

标签: visual-studio debugging

目前我的解决方案A包含一个域层基础和解决方案B,它引用了解决方案A中的二进制文件。有没有办法直接从一个调试到另一个,同时打开两个visual studio实例(每个解决方案一个) )。我已经读过你可以将解决方案A中的现有项目添加到解决方案B.还有其他解决方案吗?我已经尝试直接将解决方案A附加到解决方案B中正在运行的可执行文件但它不会让我将多个调试器附加到同一个应用程序。

我应该注意,当我进入它的一部分时会自动调出解决方案A中的解决方案A的代码,在Visual Studio的Visual Studio实例中进行调试。我想这是可以接受的,但你不能只设置任意断点和等待代码以这种方式命中它们。

由于

7 个答案:

答案 0 :(得分:33)

无法让2个Visual Studio实例调试同一个进程。这是Windows和大多数其他操作系统的限制,因为最多一个进程可以调试另一个进程。

虽然调试不属于您的解决方案的二进制文件,但这是完全受支持的方案。正如您所指出的那样,在从解决方案A进行调试时,您可以愉快地从解决方案B中进入二进制文件。

一个会妨碍这里的项目是名为“Just My Code”的调试功能。这是一个旨在将调试体验最小化到解决方案中的代码的功能。非常适合正常的解决方案,但在调试任意二进制文件时很糟糕。这可能会导致你看到的断点附近出现很多问题。您需要通过执行以下操作来禁用它

  • 工具 - >选项 - >调试
  • 未选中“启用我的代码”

答案 1 :(得分:17)

您只能让一个调试器一次调试一个进程。这意味着您只需要打开一个Visual Studio实例。

但是,您只需将解决方案B中的.cpp / .cs /任意文件打开到解决方案A的Visual Studio副本中并设置断点即可。即使这些文件实际上不是解决方案的一部分,它仍然可以工作。

答案 2 :(得分:16)

如果您明确加载解决方案A中的符号该怎么办?

如果您转到工具 - >选项 - >调试 - >符号,您可以将其指向解决方案A中的.pdb文件。

然后,您可以通过在调试时转到Debug-> Windows->模块来查看符号是否从二进制文件中加载。

答案 3 :(得分:2)

这可能会迟到,但对于那些仍然需要真正简单解决方案的人来说。只需更改您的解决方案属性以使用多个启动项目设置并设置要同时启动的项目。

点击此链接

Debug Multiple Projects at the Same Time in Visual Studio

答案 4 :(得分:1)

有一个简单的解决方法。

打开两个解决方案文件并运行它。停止要处理的第二个解决方案实例,但要确保端口正在运行。现在,您可以将端口进程附加到第一个解决方案实例,并像魔术一样进行调试。

答案 5 :(得分:1)

这就是我所做的。

假设解决方案A中的项目引用了解决方案B中的项目,我想从解决方案A项目调试到解决方案B项目。

在Visual Studio中打开解决方案B.将项目属性设置为"使用本地IIS Wb服务器",设置项目URL并创建虚拟目录。

在另一个Visual Studio实例中打开解决方案A.将项目属性设置为"使用本地IIS Wb服务器"并选中"使用IIS Express",设置项目URL并创建虚拟目录。

按F5并开始调试Visual Studio的Solution B实例。 然后按F5并开始调试解决方案Visual Studio的一个实例。 现在,Visual Studio的两个实例都处于调试模式。 现在从解决方案A开始,您应该可以调试到解决方案B,就像两个项目都在同一个解决方案中一样。

这里的关键是"使用IIS express"用于一个和#34;本地IIS Web服务器"对于另一个项目。这将允许您同时运行两个调试器。

答案 6 :(得分:0)

确保.dll和.pdb位于bin中。您将能够调试到在另一个Visual Studio中打开的其他解决方案。

我们通常有一个文件夹(例如Dependencies),其中引用了dll。将dll放在此文件夹中。在构建引用的项目时,Dll被推送到此文件夹(使用Build事件,还有其他方法)。