【问题标题】:Visual Studio: Debugging a referenced DLL, I have source in another SLNVisual Studio:调试引用的 DLL,我在另一个 SLN 中有源
【发布时间】:2013-05-08 22:36:33
【问题描述】:

我正在尝试调试一个引用了我添加的 DLL 的项目,该 DLL 存储在外部目录中,而我刚刚添加了一个引用。现在我当然可以调试我的项目,但是在我的另一个 dll 上调用方法的行我无法进入它,即 F12。

我能够做到这一点的一种方法是将我的项目 (dll) 作为现有项目添加到我的解决方案中,并替换引用的 dll 以使用附加的项目而不是磁盘上的文件。

但真是一团糟,我确定有更清洁的方法吗?

我似乎记得我是否复制了一些 PDB 文件或其他东西,但我不记得了。我是否需要打开 2 个 Visual Studio 副本,1 个用于我的主项目,1 个用于我引用的 DLL??

【问题讨论】:

  • 尝试复制 PDB 文件。我相信这将类似于引用 microsoft 符号服务器的工作方式。

标签: c# visual-studio-2010 visual-studio visual-studio-debugging


【解决方案1】:

我遇到了同样的问题,我通过清理和重建解决方案解决了这个问题。它将更正 .pdb 文件中的引用以定位并命中第二个项目中的断点。

【讨论】:

    【解决方案2】:

    我通过以下操作得到了解决方案

    尝试禁用 Just My Code (JMC)。

    工具 -> 选项 -> 调试器 取消选中“仅启用我的代码”

    【讨论】:

    • 在花了一个小时尝试重新编译和重新引用 dll 之后,我对此赞不绝口!
    【解决方案3】:

    当您进行调试构建时,所有 dll 和 pdb 文件都在宿主项目中建立。所以应该不需要手动复制文件。

    右键单击解决方案,选择添加/现有项目... 导航到 Class lib 文件夹并选择 proj 文件(例如 myproj.csproj)。 这些文件没有被复制,只是被引用,您可以在IDE中打开该类的源代码并以正常方式设置断点,它就可以工作了。

    【讨论】:

      【解决方案4】:

      在您自己的机器上以调试模式重新构建第二个解决方案(以便该 PDB 中的文件路径特定于您的机器)。

      将 .DLL 和 .PDB 文件都复制到您的引用文件夹。 Visual Studio 将自动获取 .PDB 文件并使用文件路径显示源代码。

      当引用的程序集在其他地方构建时,您还可以使用符号服务器和源服务器来实现此目的:http://msdn.microsoft.com/en-us/library/vstudio/ms241613.aspx

      【讨论】:

      • 如果无法通过直接方法调用直接进入代码,如何在 DLL 代码中添加断点?
      • 这是一个很好的答案。我想知道为什么我不能复制到 DLL !!!我错过了复制 .PDB 文件。复制后,它工作正常:) @Knaģis
      • @JennyO'Reilly 您可以将System.Diagnostics.Debugger.Break() (msdn.microsoft.com/en-us/library/…) 方法调用编译到您的解决方案中。显然要小心,这不会出现在生产代码中(可能使用#if DEBUG 预编译语句)
      • @Liam 或者如果你在同一个 Visual Studio 实例中打开它,你可以在 cs 文件中添加一个断点。
      • 这对我有用!这是我不介意在 SO 中有重复问题的地方。这个问题没有适合我的答案:stackoverflow.com/questions/1130417/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      相关资源
      最近更新 更多