如何在可视化工作室调试外部类库项目?

我有一个项目(A) ,它引用位于另一个 vs 解决方案中的外部项目(B)类库中的程序集。

我还没有明白我如何能够有效地调试类库从 B 同时运行项目 A 的程序,是否有什么东西,我必须在项目 B 上启用,如调试信息等,所以我可以步入调试时间从 A?

156381 次浏览

尝试禁用 Just My Code (JMC)。

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

默认情况下,调试器试图将世界视图限制为仅包含在解决方案中的代码。这在某些时候非常有用,但是当您想要调试解决方案中没有的代码(就像您的情况一样)时,您需要禁用 JMC 才能看到它。否则,代码将被视为外部的,并且在很大程度上隐藏在您的视图之外。

剪辑

当您的代码中断时,请尝试以下操作。

  • 调试 > 视窗 > 模组
  • 找到您感兴趣的项目的 DLL
  • 右击 > 加载符号 > 选择其他项目的.PDB 路径

[根据马丁贝克特,谁给我这个答案的家伙]

您可以调试到外部库中。

在“项目设置”选项卡中,在“源代码”字段中查找“可视化工作室目录”,其中包括 openCV 源代码的路径。然后确保。每个调试 dll 的 pdb 文件都在与 dll 相同的目录中。

这件事困扰我有一段时间了。我通常最终要做的是使用调试模式重建我的外部库,然后复制两者。DLL 和。Pdb 文件到我的网站的垃圾箱。这允许我进入库代码。

我运行了两个 Visual Studio 实例——一个用于外部 dll,一个用于主应用程序。
在外部 dll 的项目属性中,设置以下内容:

构建活动:

  • copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"

  • copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"

调试:

  • 启动外部程序: C:\<path-to-main>\bin\debug\<AppName>.exe

  • 工作目录

这样,无论何时构建外部 dll,它都会在主应用程序的目录中得到更新。如果我从外部 dll 项目触发调试——主应用程序运行,但调试器只触发外部 dll 中的断点。如果我从主项目中触发调试,那么主应用程序将使用最近构建的外部 dll 运行,但是现在调试器只触发主项目中的断点。

我意识到一个调试器可以同时完成这两个任务,但是我发现这样更容易保持两个调试器的正常工作。

假设... 的路径

A计划

C:\Projects\ProjectA

B计划

C:\Projects\ProjectB

和项目 B 的 dll 是在

C:\Projects\ProjectB\bin\Debug\

要从 ProjectA调试到 ProjectB,请执行以下操作

  1. B的 dll 和 dll 的 .PDB复制到 ProjectA的编译目录。
  2. 现在调试 ProjectA。当代码到达调试时需要调用 dll 的方法或事件等部分时,按 F11进入 dll 代码。

注意: 不要错过复制.PDB 文件

我有一个类似的问题,因为我的断点在项目(B)没有被击中。我的解决方案是重建项目(B) ,然后调试项目(A) ,因为 dll 需要更新。

VisualStudio 应该允许您调试到外部库中。

NuGet 推荐信

假设 - Project _ A (生成 Project _ a.dll) - Project _ B (生成 Project _ b.dll) 然后,通过 NuGet 包将 Project _ B 引用到 Project _ A 只需将 Project _ a.dll,Project _ a. pdb 复制到 Project _ B/Packages 文件夹。 实际上应该复制到/bin。

现在调试 Project _ A。当代码到达调试时需要调用 dll 的方法或事件等部分时,按 F11进入 dll 代码。

最快的一次性方法是在编辑和启动项目 A (File = > Open = > File)的 Visual Studio 实例中直接打开 Proj B 文件。您不需要将该文件添加到解决方案中。只要在编辑器中打开它,就可以直接在 ProjectB 文件中创建断点。

如果你有 主要(工程项目 A)外间图书馆(计划 B):

  1. 在 VisualStudio 中打开(项目 A) 解决方案。

  2. 右键单击外部库 (计划 B)解决方案-> 添加现有项目-> 然后选择. csproj 文件

  3. 再次在可视化工作室 右击(项目 A)-> -> 参考项目..。-> ,然后 加上复选标记在您的外部库,您要调试 (计划 B)

  4. 最后是 (计划 A)中的 放置刹车点,在这里调用外部库(项目 B)和 和 F5一起跑