2010-03-12 112 views
35

目前,我有一个包含域层基础和溶液B的二进制文件从溶液A.参考溶液A,有没有办法从一个直通调试其他与视觉两个实例工作室开放(每个解决方案一个)。我读过,您可以将解决方案A中的现有项目添加到解决方案B.是否有其他解决方案可行?我试着直接将解决方案A附加到解决方案B中正在运行的可执行文件,但它不会让我将多个调试器附加到同一个应用程序。调试通过在Visual Studio中不同的解决方案

我应该注意到,当我踏进一块它会自动调出解决方案B的Visual Studio实例中的代码进行调试时,我认为这是可以接受的,但是您不能只设置任意断点并等待代码以这种方式击中它们。

谢谢

回答

30

有没有办法让Visual Studio中调试同一过程的两个实例。这是Windows的限制,而大多数其他操作系统中最多只有一个进程可以调试另一个进程。

它虽然来调试可执行文件不属于您的解决方案的一部分,完全支持的方案。如您所知,你可以愉快地步入从溶液B二进制文件,同时从溶液A.调试

的一个项目将在这里碍事,虽然被命名为“仅我的代码”的调试功能。这是一个功能,旨在将调试体验最小化为解决方案中的代码。非常适合普通解决方案,但在调试任意二进制文件时很糟糕。这很可能会导致围绕你所看到的断点的许多问题。你会希望通过执行以下操作

  • 工具来禁用它 - >选项 - >调试
  • 未选中“启用仅我的代码”
+4

也见克里斯的答案。您可以在解决方案B中将解决方案A的源代码设置为断点,而无需向解决方案添加项目。将Visual Studio指向A的PDB文件(在编译期间创建,请参阅Chris的答案),然后在解决方案B中打开A的源文件。您可以打开或拖放,您不必将其添加到解决方案中。值得注意的是,有些时候断点看起来是空的(就像它不会被打到),直到它被装载,这可能是在运行时。 – Vimes 2013-07-31 20:24:22

+0

@JohnB当你说“drag-n-drop”时,你是什么意思?如果我从VS 2010的一个实例的解决方案资源管理器中拖动文件到另一个实例,唯一有效的拖动目标是文本编辑器,它只是将文件的副本粘贴到打开的文档中。如果我从VS的一个实例拖动编辑器选项卡,我不能将它放到另一个实例中。有没有一个快速简单的方法来做到这一点,不涉及文件 - >打开? – Weeble 2014-03-06 14:07:39

+2

@Weeble,我将源文件从Windows资源管理器拖到Visual Studio文本区域。对我来说,这会打开文件。 – Vimes 2014-03-06 22:51:53

14

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

如果你去工具 - >选项 - > Debugging->符号,你可以在从解决方案A.

然后你可以看到,如果符号是从你的二进制文件通过将加载的.pdb文件指向它Debug-> Windows->调试时模块。

14

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

但是,你可以打开的.cpp /的.cs /无论从溶液B文件到一个解决方案的Visual Studio的副本,并设置断点。即使这些文件实际上不是解决方案的一部分,它仍然可以工作。

+5

我一直在使用VS 13年,只是从你身上学到的是一个可以打开未在方案提交正在调试,并仍然是一个源文件允许设置的断点(如果找到了pdb,并且源文件位于相同的位置,可能还有其他条件,但仍然会进行调查)。非常感谢院长 – buckley 2015-07-29 11:25:26

1

有一个简单的解决这一点。

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

1

这是我做的。

说从溶液中的一个项目,是指从溶液B的一个项目,我想调试到从溶液B项目的项目。

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

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

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

这里的关键是为其中一个项目使用“使用IIS express”和“本地IIS Web服务器”。这会让你有两个调试器一次运行。

+0

这只有在您调试Web应用程序时才有效。我相信OP正在处理可执行文件。 – 2015-04-13 16:42:50

0

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

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

2

这可能会很晚,但对于任何仍需要真正简单解决方案的人来说,只需将您的解决方案属性更改为使用多个启动项目设置并设置要同时启动的项目。

请点击此链接

Debug Multiple Projects at the Same Time in Visual Studio

+0

不过,启动多个项目(例如,如果您需要运行服务器)和仅引用外部项目以便您可以插入代码之间是有区别的。 – 2017-10-20 20:49:39

相关问题