【问题标题】:Break Points Only Working When Project Run From Certain Locations断点仅在项目从特定位置运行时起作用
【发布时间】:2017-01-15 08:45:21
【问题描述】:

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

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

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

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


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

Y:(远程)- 这是我的部门驱动器,过去我也在那里进行了很多调试,没有这个问题。 断点在这里有效!

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


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

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

【问题讨论】:

  • 很可能,您在所有情况下都在运行 Y 版本。您的 Debug \ Start Action 属性中有硬编码路径吗?
  • @PanagiotisKanavos 我不确定 - 我该如何检查?如果我进入project properties,然后进入debug tab,则没有我可以看到的硬编码值
  • @PanagiotisKanavos 谢谢你给了我寻找答案所需的线索!

标签: wpf git debugging visual-studio-2015 breakpoints


【解决方案1】:

事实证明,这是由我的 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 影响)。

通过\\\\访问的网络驱动器

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

CMD 不支持将 UNC 路径作为当前目录

当构建后操作失败时,调试将使用断点正常工作。

从映射的网络驱动器运行

如果我只是通过Y:\test 导航到文件夹,那么构建后操作确实有效,因为它读取的是Y: 而不是\\。但是,与本地驱动器中的情况类似,这使我无法正确调试。

这解释了为什么它可以在 1 个(映射的)网络驱动器上工作,而不能在另一个网络驱动器上工作,以及为什么它不能在 c: 上工作(因为构建后操作不允许对其进行调试)。


对此的解决方案是仅对 Release 程序集而不是 Debug 运行构建后操作。

【讨论】:

  • 很高兴知道您已经解决了这个问题,您可以将其标记为答案。
猜你喜欢
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2021-04-01
  • 1970-01-01
相关资源
最近更新 更多