断点仅在某些位置的项目 运行 时有效

Break Points Only Working When Project Run From Certain Locations

我有一个问题 Visual Studio 没有在我的任何断点处中断并显示以下消息:

The breakpoint will not currently be hit. No symbols have been loaded for this document

我已经尝试了几乎所有我能找到的相关解决方案,但都没有成功(包括 the answers here)。

幸运的是,我在 .git 上有版本,在推送它时它正在运行,所以我测试了将存储库克隆到各种驱动器上,看看会发生什么:


C:(本地)- 这是我 运行 我所有其他项目的来源,并且从未遇到过这个问题。但是,我不能为这个项目使用任何断点。

Y: (remote) - 这是我的部门驱动器,我过去也在那里做过很多调试,没有这个问题。 这里的断点起作用了!

H:(远程)-这是我的个人网络驱动器-断点在这里不起作用。


我还尝试在驱动器中移动项目文件夹,但每个结果都相同

我对此完全迷失了,非常感谢任何帮助!如果有人能想到的话,我也很乐意 运行 更多测试。

事实证明,这是由我的 Post-构建操作引起的,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 影响)。

通过 \\

访问的网络驱动器

如果我(在资源管理器中)导航到 \\file\test\,构建操作不会 运行 因为 .bat 文件无法在 UNC 路径上运行:

CMD does not support UNC paths as current directories

当 post-build 操作失败时,调试将使用断点正确工作。

运行 来自映射的网络驱动器

如果我只是通过 Y:\test 导航到文件夹,那么 post-build 操作会起作用,因为它读取 Y: 而不是 \。但是,类似于本地驱动器中的情况,这使我无法正常调试。

这解释了为什么它在 1 个(映射的)网络驱动器上工作,而不是另一个,以及为什么它在 c: 上不工作(因为 post-build 操作不会允许调试)。


此问题的解决方案是仅 运行 post-build 操作 Release 程序集而不是 Debug