断点仅在项目从特定位置运行时起作用



我有一个问题,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

最新更新