C# C“Visual Studio服务调试”;当前不会命中断点。本文件未加载任何符号”;
VisualStudio新手,C#新手。在Visual Studio 2017中构建一个名为Transactional Messaging的C#windows服务,该服务依赖于一个名为Outbound Messaging的项目。当我开始调试并尝试在出站消息文件上添加断点时,我得到 “当前不会命中断点。未加载任何符号 对于本文件” 据我所知,VS仅无法加载以下pdb文件:log4net.dll、Castle.Windsor.dll和Castle.Core.dll。在事务性消息传递服务中向文件添加断点时,我没有这个问题。我无法识别行为模式或永久性修复,因此在这一点上,错误似乎是随机的。有一分钟,我想我已经找到了一个修复程序,当我在当天晚些时候尝试对同一个错误使用该修复程序时,我没有运气。我怀疑最近的一次停电意外地关闭了我的电脑,因为它看起来像是可以缓存pdb文件,但有人告诉我这将是一个漫长的过程 调试服务所遵循的步骤:C# C“Visual Studio服务调试”;当前不会命中断点。本文件未加载任何符号”;,c#,visual-studio,windows-services,visual-studio-debugging,pdb-files,C#,Visual Studio,Windows Services,Visual Studio Debugging,Pdb Files,VisualStudio新手,C#新手。在Visual Studio 2017中构建一个名为Transactional Messaging的C#windows服务,该服务依赖于一个名为Outbound Messaging的项目。当我开始调试并尝试在出站消息文件上添加断点时,我得到 “当前不会命中断点。未加载任何符号 对于本文件” 据我所知,VS仅无法加载以下pdb文件:log4net.dll、Castle.Windsor.dll和Castle.Core.dll。在事务性消息传递服务中向文件添加断
installutil/u TransactionalMessaging.exe
,通过VS命令行卸载事务性消息服务installutil TransactionalMessaging.exe
,通过VS命令行安装事务性消息服务我不确定这是因为对VS、C#或代码库缺乏了解。任何洞察都是值得赞赏的,我已经过了谷歌搜索阶段并发布一个新问题作为最后手段。您不能附加调试器,因为您没有这样做的权利。只需在注册表中翻转某个位,就可以正确地执行此操作 还可以以管理员身份启动VisualStudio,并允许进程 将由其他用户自动调试:
reg add "HKCR\AppID\{E62A7A31-6025-408E-87F6-81AEB0DC9347}" /v AppIDFlags /t REG_DWORD /d 8 /f
当我在项目a中更改代码并忘记编译代码时,通常会收到此消息。
另一个项目B引用项目A,它在屏幕上有A的最新源代码,但以A的过时程序集开始。因此,它无法启用断点,因为代码与程序集不匹配 还有一件事,在我看来,这是一个错误,也是一个麻烦,但根据微软的说法,这是出于设计(我已经问过他们):
自Visual Studio 2015以来,项目B的编译不会自动包括修改后的引用程序集,在本例中,该程序集是程序集A。在B中的某个位置有一个A的本地副本,将使用该副本。与上面相同的结果:代码是最新的,但程序集是过时的。 您必须重建它,而不是编译强> 还有一件事:
您必须为调试模式进行编译。在发布模式下,默认项目设置不允许进行正确的调试,例如VS 2008中的设置。如果上面没有任何帮助,请确保您的文件是从相关项目打开的,而不是从另一个(旧)项目打开的 例如:
- 在处理项目时,关闭VS,但在VS中打开了文件(选项卡)
- 将项目复制到新文件夹并打开解决方案。文件(选项卡)将从旧目录加载,如果要调试,则在关闭它们并从当前文件夹重新加载之前无法调试
我很快就要重新安装我的VS了,因为其他答案对我没有任何帮助,但幸运的是,我在项目中意识到了这一点,现在可以调试了。我在哪里输入此命令?我尝试在解决方案的debug文件夹中的visualstudio命令提示符中输入它,但没有输入luck@mel,您的意思是要在CMD中运行reg命令行吗?是的,必须在CMD shell中输入。您也可以使用regedit.exe并手动搜索密钥。您能在本地计算机中找到dll文件或pdb文件吗?请在工具->选项->调试->符号下启用符号服务器。此外,这些程序集是否从Nuget软件包manage安装?如果是,请确保您是否安装了正确/匹配的版本。