C# Visual Studio 服务调试 "The breakpoint will not currently be hit. No Symbols have been loaded for this document"

标签 c# visual-studio windows-services visual-studio-debugging pdb-files

Visual Studio 新手和 C# 新手。在 Visual Studio 2017 中构建一个名为 Transactional Messaging 的 C# windows 服务,它依赖于一个名为 Outbound Messaging 的项目。当我开始调试并尝试在出站消息文件上添加断点时,我得到了

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

据我所知,VS 只能加载以下 pdb 文件:log4net.dll、CaSTLe.Windsor.dll 和 CaSTLe.Core.dll。我没有向事务消息服务中的文件添加断点的问题。我无法识别行为模式或永久修复,所以此时错误似乎是随机的。前一分钟我认为我找到了一个修复程序,但当我在当天晚些时候尝试使用该修复程序解决同一个错误时,我没有运气。我怀疑最近的一次停电导致我的计算机意外关闭,因为它看起来可以缓存 pdb 文件,但有人告诉我这不太可能。

调试服务的步骤:

  1. 通过 Windows 服务小程序停止事务性消息服务
  2. 使用 Debug 文件夹中的 installutil/u TransactionalMessaging.exe 通过 VS 命令行卸载 Transactional Messaging Service
  3. Visual Studio 中的清洁事务消息传递解决方案
  4. 在 Visual Studio 中构建事务性消息传递解决方案(有一次解决方法是在解决方案资源管理器中右键单击解决方案的各个方面并单独构建)
  5. 使用 Debug 文件夹中的 installutil TransactionalMessaging.exe 通过 VS 命令行安装事务性消息服务
  6. 通过 Windows 服务小程序启动事务消息服务
  7. 在 VS 中,调试 > 附加到进程 > 事务性消息传递
  8. 尝试向出站消息服务中的文件添加断点,这会导致出现上述错误。

我尝试解决此错误的步骤:

  1. Debug > Windows > Modules 手动加载每个模块的符号(无法找到 log4net.dll、CaSTLe.Windsor.dll 和 CaSTLe.Core.dll 的 pdb 文件) picture of modules
  2. 在上述第 2 步和第 3 步之间完全删除 bin 和 obj 文件夹
  3. 项目 > 项目属性 > 构建 > 高级 > 调试信息:完整(用于事务性消息传递和出站消息传递)

我不确定这是否是对 VS、C# 或代码库缺乏了解。感谢您提供任何见解,我已经过了谷歌搜索阶段并发布了一个新问题作为最后的手段。

最佳答案

当我在项目 A 中更改代码并忘记编译时,通常会收到此消息。
引用项目 A 的另一个项目 B 在屏幕上显示了 A 的最新源代码,但以 A 的过时程序集启动。因此它无法启用断点,因为代码与程序集不匹配。

还有一件事,在我看来这是一个错误和麻烦,但根据 MS 的说法是设计使然(我已经问过他们):
自 Visual Studio 2015 起,项目 B 的编译不会自动包含修改后的引用程序集,在此示例中为程序集 A。B 中某处存在 A 的本地副本,而是使用该副本。与上面相同的结果:最新的代码,但过时的程序集。 不是编译,而是重建它!

还有一件事:
您必须针对 DEBUG 模式进行编译。在 Release 模式下,默认项目设置不允许正确调试,例如在 VS 2008 中。

关于C# Visual Studio 服务调试 "The breakpoint will not currently be hit. No Symbols have been loaded for this document",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43642240/

相关文章:

c# - 从 List<object> 获取对象,其中属性为 null 且顺序为最低

C# 调试 - 无法开始调试,因为缺少调试目标

c# - Visual Studio : The Operation could not be completed. 参数不正确

c# - 设置并发作业的最大值 Quartz.Net

c# - Windows 服务中未触发设备事件

c# - 优化用于发送 HTTP 请求的 Windows 服务

c# - 编译错误 : 'The type or namespace name ' Runtime' does not exist in the namespace 'MyAppNamespace.System' (are you missing an assembly reference? )'

c# - 使用 Wiimote 加速度计控制机械臂

c# - 更新现有的 Outlook 约会

c# - VS2015社区中的单元测试异常