我有一个项目(A),它引用位于另一个vs解决方案中的外部项目(B)类库中的程序集.
我还没有理解如何在从项目A运行程序时从B有效地调试类库.我是否必须在项目B上启用某些内容,例如调试信息等,以便我可以在A调试时进入调试阶段?
提前致谢.
尝试禁用Just My Code(JMC).
工具 - >选项 - >调试器
取消选中"仅启用我的代码"
默认情况下,调试器会尝试将世界视图限制为仅包含在解决方案中的代码.这有时非常有用,但是当你想调试不在你的解决方案中的代码时(就像你的情况一样),你需要禁用JMC才能看到它.否则,代码将被视为外部代码,并在很大程度上隐藏在您的视图中.
编辑
如果您的代码中断,请尝试以下操作.
调试 - > Windows - >模块
找到您感兴趣的项目的DLL
右键单击 - >加载符号 - >为您的其他项目选择.PDB的路径
这已经困扰了我一段时间.我通常最终做的是使用调试模式重建我的外部库,然后将.dll和.pdb文件复制到我的网站的bin.这允许我进入图书馆代码.
假设的路径
项目 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文件
我运行了两个visual studio实例 - 一个用于外部dll,一个用于主应用程序.
在外部dll的项目属性中,设置以下内容:
构建事件:
copy /y "$(TargetDir)$(TargetName).dll" "C:\
copy /y "$(TargetDir)$(TargetName).pdb" "C:\
调试:
启动外部程序: C:\
工作目录 C:\
这样,每当我构建外部dll时,它都会在主应用程序的目录中更新.如果我从外部dll的项目中调试 - 主应用程序运行,但调试器只能访问外部dll中的断点.如果我从主项目中调试,主应用程序将使用最近构建的外部dll运行,但现在调试器只能在主项目中遇到断点.
我意识到一个调试器将为两者做好工作,但我发现用这种方式保持两者更容易.