C# Visual Studio 服务调试 "The breakpoint will not currently be hit. No Symbols have been loaded for this document"
C# Visual Studio Service Debugging "The breakpoint will not currently be hit. No Symbols have been loaded for this document"
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 文件,但有人告诉我这不太可能。
调试服务的步骤:
- 通过windows 服务小程序停止交易消息服务
- 使用 Debug 文件夹中的
installutil /u TransactionalMessaging.exe
通过 VS 命令行卸载 Transactional Messaging Service
- Visual Studio
中的清洁交易消息传递解决方案
- 在 Visual Studio 中构建事务性消息传递解决方案(有一次修复是在解决方案资源管理器中右键单击解决方案的各个方面并单独构建)
- 使用 Debug 文件夹中的
installutil TransactionalMessaging.exe
通过 VS 命令行安装事务性消息服务
- 通过windows 服务小程序启动交易消息服务
- 在 VS 中,调试 > 附加到进程 > 事务性消息传递
- 尝试向出站消息服务中的文件添加断点,这让我出现了上述错误。
我尝试解决此错误的步骤:
- 调试 > Windows > 手动加载每个模块符号的模块(无法找到 log4net.dll、Castle.Windsor.dll 和 Castle.Core.dll 的 pdb 文件)
picture of modules
- 在上述第 2 步和第 3 步之间完全删除 bin 和 obj 文件夹
- 项目 > 项目属性 > 构建 > 高级 > 调试信息:完整(用于事务性消息传递和出站消息传递)
我不确定这是对 VS、C# 还是代码库缺乏了解。感谢您的任何见解,我已经过了谷歌搜索阶段并发布了一个新问题作为最后的手段。
您不能附加调试器,因为您没有这样做的权利。您只需在注册表中翻转某个位即可获得此权利。
See my earlier Answer:
Also start VisualStudio as Administrator and allow, that a process can
automatically be debugged by a different user:
reg add "HKCR\AppID\{E62A7A31-6025-408E-87F6-81AEB0DC9347}" /v AppIDFlags /t REG_DWORD /d 8 /f
当我在项目 A 中更改代码并忘记编译时,通常会收到此消息。
引用项目 A 的另一个项目 B 在屏幕上显示了 A 的最新源代码,但以 A 的过时程序集启动。因此它无法启用断点,因为代码与程序集不匹配。
还有一件事,在我看来这是一个错误和麻烦,但根据 MS 的说法是设计使然(我已经问过他们):
自 Visual Studio 2015 年起,项目 B 的编译不会自动包含修改后的引用程序集,在此示例中为程序集 A。B 中某处存在 A 的本地副本,而是使用该副本。与上面相同的结果:最新的代码,但过时的程序集。
不是编译,而是重建它!
还有一件事:
您必须为 DEBUG 模式编译。在 Release 模式下,默认项目设置不允许正确调试,例如在 VS 2008 中。
如果上面没有任何帮助,请确保您的文件是从相关项目打开的,而不是从另一个(旧的)项目打开的。
示例:
您正在处理一个项目,关闭了 VS,但您在 VS 中打开了文件(选项卡)。
将项目复制到新文件夹并打开解决方案。文件(选项卡)将从旧目录加载,如果你想调试,那么你不能调试,直到你关闭它们并从当前文件夹重新加载它们。
我非常接近重新安装我的 VS,因为其他答案对我没有任何帮助,但幸运的是我在我的项目中意识到了这一点,我现在可以调试了。
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 文件,但有人告诉我这不太可能。
调试服务的步骤:
- 通过windows 服务小程序停止交易消息服务
- 使用 Debug 文件夹中的
installutil /u TransactionalMessaging.exe
通过 VS 命令行卸载 Transactional Messaging Service - Visual Studio 中的清洁交易消息传递解决方案
- 在 Visual Studio 中构建事务性消息传递解决方案(有一次修复是在解决方案资源管理器中右键单击解决方案的各个方面并单独构建)
- 使用 Debug 文件夹中的
installutil TransactionalMessaging.exe
通过 VS 命令行安装事务性消息服务 - 通过windows 服务小程序启动交易消息服务
- 在 VS 中,调试 > 附加到进程 > 事务性消息传递
- 尝试向出站消息服务中的文件添加断点,这让我出现了上述错误。
我尝试解决此错误的步骤:
- 调试 > Windows > 手动加载每个模块符号的模块(无法找到 log4net.dll、Castle.Windsor.dll 和 Castle.Core.dll 的 pdb 文件) picture of modules
- 在上述第 2 步和第 3 步之间完全删除 bin 和 obj 文件夹
- 项目 > 项目属性 > 构建 > 高级 > 调试信息:完整(用于事务性消息传递和出站消息传递)
我不确定这是对 VS、C# 还是代码库缺乏了解。感谢您的任何见解,我已经过了谷歌搜索阶段并发布了一个新问题作为最后的手段。
您不能附加调试器,因为您没有这样做的权利。您只需在注册表中翻转某个位即可获得此权利。
See my earlier Answer:
Also start VisualStudio as Administrator and allow, that a process can automatically be debugged by a different user:
reg add "HKCR\AppID\{E62A7A31-6025-408E-87F6-81AEB0DC9347}" /v AppIDFlags /t REG_DWORD /d 8 /f
当我在项目 A 中更改代码并忘记编译时,通常会收到此消息。
引用项目 A 的另一个项目 B 在屏幕上显示了 A 的最新源代码,但以 A 的过时程序集启动。因此它无法启用断点,因为代码与程序集不匹配。
还有一件事,在我看来这是一个错误和麻烦,但根据 MS 的说法是设计使然(我已经问过他们):
自 Visual Studio 2015 年起,项目 B 的编译不会自动包含修改后的引用程序集,在此示例中为程序集 A。B 中某处存在 A 的本地副本,而是使用该副本。与上面相同的结果:最新的代码,但过时的程序集。
不是编译,而是重建它!
还有一件事:
您必须为 DEBUG 模式编译。在 Release 模式下,默认项目设置不允许正确调试,例如在 VS 2008 中。
如果上面没有任何帮助,请确保您的文件是从相关项目打开的,而不是从另一个(旧的)项目打开的。
示例:
您正在处理一个项目,关闭了 VS,但您在 VS 中打开了文件(选项卡)。
将项目复制到新文件夹并打开解决方案。文件(选项卡)将从旧目录加载,如果你想调试,那么你不能调试,直到你关闭它们并从当前文件夹重新加载它们。
我非常接近重新安装我的 VS,因为其他答案对我没有任何帮助,但幸运的是我在我的项目中意识到了这一点,我现在可以调试了。