我有一个项目(A),它引用了来自另一个VS解决方案中的外部项目(B)类库的程序集。
我还没有理解如何在从项目A运行程序的同时有效地调试来自B的类库。是否需要在项目B中启用调试信息等内容,以便我可以在A中进行调试时进入其中?
我有一个项目(A),它引用了来自另一个VS解决方案中的外部项目(B)类库的程序集。
我还没有理解如何在从项目A运行程序的同时有效地调试来自B的类库。是否需要在项目B中启用调试信息等内容,以便我可以在A中进行调试时进入其中?
尝试禁用"Just My Code"(JMC)。
默认情况下,调试器会尝试将世界视图限制在仅包含在您的解决方案中的代码范围内。这通常很有帮助,但当您想要调试不在您的解决方案中的代码时(如你现在的情况),您需要禁用JMC才能看到它。否则,该代码将被视为外部代码并且基本上会被隐藏。
编辑
当代码出现问题时,请尝试以下操作。
项目A
C:\Projects\ProjectA
项目 B
C:\Projects\ProjectB
而ProjectB的dll位于
C:\Projects\ProjectB\bin\Debug\
要从ProjectA
调试进入ProjectB
,请按照以下步骤进行:
B
的dll与dll的.PDB
复制到ProjectA
的编译目录中。ProjectA
。当代码在调试过程中到达需要调用dll的方法或事件等部分时,请按F11
进入dll的代码。注意:不要忘记复制.PDB文件
这个问题困扰我很长时间,通常我会使用调试模式重新构建我的外部库,然后将.dll和.pdb文件复制到我的网站的bin目录下。这样可以让我进入库代码。
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
如果只需要一次性地完成此操作,最快的方法是在编辑和启动项目A的Visual Studio实例中直接打开Proj B文件(文件 => 打开 => 文件)。您不需要将该文件添加到解决方案中。只需在编辑器中打开它即可让您直接在Proj B文件中创建断点。
[根据发送给我的答案的Martin Beckett]
您可以调试外部库。
在项目设置选项卡中查找“Visual Studio目录”,在“源代码”字段中包括openCV源路径。然后确保每个调试dll的.pdb文件与dll位于同一目录中。
NuGet引用
假设有以下项目: - Project_A (生成 project_a.dll) - Project_B (生成 project_b.dll) 如果 Project_B 引用了 NuGet 包中的 Project_A,则只需将 project_a.dll 和 project_a.pdb 复制到 Project_B/Packages 文件夹。这样,文件就会被复制到 /bin 文件夹中。
现在调试 Project_A。在代码执行到需要调用 dll 的方法或事件等部分时,按 F11 键步入 dll 的代码。
我遇到了类似的问题,我的项目(B)中的断点没有被触发。我的解决方案是重新构建项目(B),然后调试项目(A),因为dll需要更新。
Visual Studio应该允许您调试外部库。