Answers:
尝试禁用“仅我的代码”(JMC)。
默认情况下,调试器尝试将世界范围限制为仅包含在解决方案中的代码。有时这确实很有用,但是当您要调试解决方案中未包含的代码(视您的情况而定)时,您需要禁用JMC才能看到它。否则,代码将被视为外部代码,并且在您看来基本上是隐藏的。
编辑
当您的代码陷入困境时,请尝试以下操作。
假设路径
项目 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:\<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运行,但是现在调试器仅命中主项目中的断点。
我意识到一个调试器可以同时完成这两个任务,但是我发现以这种方式保持两者一致很容易。
我遇到了类似的问题,因为我的项目(B)的断点没有被击中。我的解决方案是重建项目(B),然后调试项目(A),因为需要更新dll。
Visual Studio应该允许您调试到外部库中。