我有一个问题,Visual Studio在我的任何断点都没有中断,消息:
The breakpoint will not currently be hit. No symbols have been loaded for this document
我已经尝试了几乎所有我能找到的相关解决方案,但根本没有成功(包括这里的答案)。
幸运的是,我在.git
上有一个版本,在推送它的时候可以工作,所以我测试了将存储库克隆到不同的驱动器上,看看会发生什么:
C:
(local) -这是我运行所有其他项目的地方,从来没有遇到过这个问题。然而,我不能在这个项目中使用任何断点。
Y:
(remote) -这是我的部门驱动器,我在过去也做了很多调试,没有这个问题。断点在这里工作!
H:
(远程)-这是我的个人网络驱动器-断点在这里不起作用。
我还尝试在驱动器中移动项目文件夹,但对于每个
都有相同的结果我完全迷路了,真的很感激任何帮助!我也很乐意做更多的测试,如果有人能想到任何。
事实证明,这是由我的Post-Build Action引起的,ILMerge.bat
:
CMD
ECHO parameter=%1
CD %1
COPY WpfFileDeleter.exe temp.exe
ECHO "....ILMerge.exe"
"....ILMerge.exe" /out:"WpfFileDeleter.exe" /targetPlatform:"v4" "temp.exe" "Microsoft.WindowsAPICodePack.dll" "Microsoft.WindowsAPICodePack.ExtendedLinguisticServices.dll" "Microsoft.WindowsAPICodePack.Sensors.dll" "Microsoft.WindowsAPICodePack.Shell.dll" "Microsoft.WindowsAPICodePack.ShellExtensions.dll"
DEL temp.exe
这个动作很好,但问题是我如何访问.sln
本地驱动器
当在C:
上本地构建时,构建操作成功,但是一旦二进制文件与所需的.dll合并,断点就不再正常工作,因为.exe
不会与现有的.pdb
重合(不受ILMerge
的影响)。
\\
访问的网络驱动器
如果我导航(在资源管理器中)到\filetest
,构建操作将不会运行,因为.bat
文件不能在UNC路径上操作:
命令行不支持UNC路径作为当前目录
当构建后操作失败时,调试将在断点处正常工作。
从映射的网络驱动器运行
如果我只是通过Y:test
导航到文件夹,那么后构建操作确实有效,因为它读取Y:
而不是\
。但是,与本地驱动器中的场景类似,这会阻止我正确调试。
这解释了为什么它在1(映射的)网络驱动器上工作,而不是另一个,以及为什么它不能在c:
上工作(因为构建后的操作不允许它被调试)。
解决这个问题的方法是只在Release
程序集上运行构建后操作,而不是Debug
。