0

我有一个包含多个项目的解决方案,但现在只运行两个。项目 1 在发布模式下作为 Windows 服务运行,但在调试模式下作为控制台应用程序运行。项目 2 是一个 MMC 管理单元(输出类型 = 类库)。它们通过 WCF 进行通信。

时间A

当我昨天在全新构建后第一次开始调试时,我的调用堆栈窗口显示如下:

lines in service...
[External Code]
--Transition from Client to Server --
lines in client...

我可以双击任何一行以转到该行。我可以在任何一个项目中设置断点,它们会被击中。

时间 B(当天晚些时候)

我开始在客户端(项目 2)中看到断点上的标志,指示“断点当前不会被命中。源代码与原始版本不同”,即使我刚刚重建了所有项目。我做了一些代码更改,但(据我所知)没有项目或构建更改。我做了一个“干净”的解决方案,但这没有帮助。调用堆栈的工作方式仍与 TIME A 期间相同。

时间 C(第二天——今天早上)

我重新启动。我删除了所有 obj 和 bin 目录。我重建了整个解决方案并启动了希望新的开始会改善这种情况。现在情况更糟了。断点标记为“当前不会命中断点。没有为此文档加载任何符号。” 调用堆栈已恶化为将客户端显示为外部代码:

lines in service...
[External Code]
--Transition from Client to Server --
[External Code]
  • 如果我在调用堆栈中选择显示外部代码,它会列出来自客户端程序集的行(当然与系统程序集混合),但全部显示为灰色。在模块窗口(调试 >> 窗口 >> 模块)中列出客户端程序集。
  • 如果我从调用堆栈中的一行中选择符号加载信息,它会显示 5 个不同位置的“找不到或打开 PDB 文件”,最奇怪的是在我的项目的 obj/Release 目录下——而不是 obj/Debug 目录—— - 即使我的项目设置为调试配置。
  • 如果我从调用堆栈中的一行中选择加载符号,然后在我的 obj/Debug 或 bin/Debug 目录中选择 pdb 文件,它会报告"A matching symbol file was not found in this folder"
  • 配置管理器显示所有项目都设置为调试配置,并且都包含在构建中。

我已经查看了类似的 SO 问题,这帮助我找到了上述所有要检查的内容,但还没有找到任何符合我的情况的押韵或理由。

如何从谵妄中拯救 Visual Studio 并恢复丢失的符号?

4

1 回答 1

0

好的,Visual Studio,正如我所料,是我,而不是你。你有,通过厚实的[客户],继续显示你坚定的支持[功能]。我们还能成为[虚拟]朋友吗?这归结为我们文化的差异。我只看表面价值;你喜欢把自己埋在你的注册表数据中,忽略我的 MMC 管理单元代码,它就在你面前大喊“我在这里,我在这里!” .

叹。

我在这。

我的意思是,仅仅因为它没有取代您与InstallUtil的最后关系,是否有任何理由挖掘过去,将那些被遗忘已久的 [代码] 位带到表面,使 dll 与 pdb 永远分开?显然你是这么认为的。是的,问题来了!我只是不明白你,但现在我明白了。

哦是的; 现在我知道了。

于 2013-02-26T15:31:19.233 回答