我有一个项目(A),它引用位于另一个vs解决方案中的外部项目(B)类库中的程序集。
我还没有理解如何在从项目A运行程序时从B有效地调试类库。我是否必须在项目B上启用某些内容,例如调试信息等,以便我可以在调试时进入来自A?
提前致谢。
答案 0 :(得分:183)
尝试禁用Just My Code(JMC)。
默认情况下,调试器会尝试将世界视图限制为仅包含在解决方案中的代码。这有时非常有用,但是当你想调试不在你的解决方案中的代码时(就像你的情况一样),你需要禁用JMC才能看到它。否则,代码将被视为外部代码,并在很大程度上隐藏在您的视图中。
修改强>
如果您的代码中断,请尝试以下操作。
答案 1 :(得分:12)
这已经困扰了我一段时间。我通常最终做的是使用调试模式重建我的外部库,然后将.dll和.pdb文件复制到我的网站的bin。这允许我进入图书馆代码。
答案 2 :(得分:6)
假设
的路径 项目A
C:\Projects\ProjectA
项目B
C:\Projects\ProjectB
并且ProjectB的dll在
中C:\Projects\ProjectB\bin\Debug\
要从ProjectB
调试ProjectA
,请执行以下操作
B
的dll与dll的.PDB
复制到ProjectA
的编译目录。 ProjectA
。当代码到达您需要在调试时调用dll的方法或事件等的部分时,按F11
以进入dll的代码。 注意:请勿错过.PDB文件
答案 3 :(得分:5)
我运行了两个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
工作目录C:\<path-to-main>\bin\debug
这样,每当我构建外部dll时,它都会在主应用程序的目录中更新。如果我从外部dll的项目中调试 - 主应用程序运行,但调试器只在外部dll中命中断点。如果我从主项目中调试,主应用程序将使用最近构建的外部dll运行,但现在调试器只会在主项目中遇到断点。
我意识到一个调试器会为两者完成这项工作,但我发现以这种方式保持两者更容易。
答案 4 :(得分:1)
[据Martin Beckett所说,给我这个答案的人]
您可以调试到外部库。
在项目设置选项卡中,在“源代码”字段中查找“visual studio目录”,包括openCV源的路径。然后确保每个调试dll的.pdb文件与dll在同一目录中。
答案 5 :(得分:0)
我遇到了类似的问题,因为我的项目(B)中的断点没有被击中。我的解决方案是重建项目(B),然后调试项目(A),因为需要更新dll。
Visual Studio应该允许您调试到外部库中。
答案 6 :(得分:0)
获取参考
假设 -Project_A(产生project_a.dll) -Project_B(产生project_b.dll) 然后通过NuGet包对Project_A的Project_B引用 只需将project_a.dll,project_a.pdb复制到文件夹Project_B / Packages。 实际上,应该将其复制到/ bin。
现在调试Project_A。当代码到达调试时需要调用dll的方法或事件等的部分时,按F11键进入dll的代码。
答案 7 :(得分:0)
一次性执行此操作的最快方法是直接在您正在编辑和启动项目 A 的 Visual Studio 实例中打开 Proj B 文件(文件 => 打开 => 文件)。您无需将该文件添加到解决方案中。只需在编辑器中打开它,您就可以直接在项目 B 文件中创建断点。