【问题标题】:Why am I getting breakpoints in DLL code为什么我在 DLL 代码中出现断点
【发布时间】:2016-11-14 00:52:12
【问题描述】:

我有两个解决方案,A 和 B。在解决方案 A 中,我有一个项目 A1(输出到 DLL)。 A1 最初只在解决方案 A 中使用,但由于一些不可预见的情况,解决方案 B 中的一个项目最终需要它。

我将项目 A1 的 DLL 文件从解决方案 A 复制到解决方案 B,并将其添加为参考。我是手动完成的;每当 A1 发生变化时,我都必须手动复制和替换 DLL。

一切都很好,直到有一天,我意识到我在调试期间遇到了断点。令我惊讶的是,断点位于 A1 的班级中。我能够看到我在解决方案 A 上编写的完整代码,包括 cmets。当我从那里删除断点时,下次调试时它会回来。不过,它似乎在第二天就消失了。

现在我的问题是:为什么我没有将 A1 的源代码复制到解决方案 B 时可以看到完整的代码?我的理解是 DLL 需要反编译器才能返回其代码状态。即使使用反编译器,它也应该只给我类似的东西,但不准确。最神奇的是,我什至可以看到我写的所有 cmets。

我正在使用 VS2012 Pro,使用 .NET 4.5。

【问题讨论】:

标签: .net visual-studio dll


【解决方案1】:

在调试模式下构建时,完整的源代码存储在程序集的 .pdb 文件中。此外,如果您处于发布模式,它仍然包含源代码的路径,如果 dll 是在同一台计算机上构建的,它将导航到该路径并在您的硬盘驱动器上显示源代码。

在发生这种情况的日子里,您可能同时复制了 .dll 和 .pdb,但随后您获得了新版本的 .dll,您要么删除了 pdb,要么版本不再匹配,因此它停止使用它。

【讨论】:

  • 哇,这让我大开眼界。不知道有这样的功能。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多