我有两个解决方案,A和B.在解决方案A中,我有一个项目A1(输出到DLL)。 A1最初仅在解决方案A中使用,但由于某些无法预料的情况,解决方案B中的一个项目最终需要它。
我将项目A1的DLL文件从解决方案A复制到解决方案B,并将其添加为参考。我是以手工方式做到的;每当A1发生变化时,我都必须手动复制和替换DLL。
直到有一天,一切都很好,我意识到我在调试期间得到了断点。令我惊讶的是,断点属于A1级。我能够看到我在解决方案A上写的完整代码,包括注释。当我从那里删除断点时,它会在我下次调试时返回。不过第二天它似乎消失了。
现在我的问题是:当我没有将A1的来源复制到解决方案B时,为什么我能够看到完整的代码?我的理解是DLL需要反编译器返回其代码状态。即使使用反编译器,它也应该只给我类似的东西,但不是很精确。最令人惊讶的是我甚至可以看到我写的所有评论。
我使用的是VS2012 Pro,使用的是.NET 4.5。
答案 0 :(得分:1)
在调试模式下构建时,完整源代码存储在程序集的.pdb文件中。此外,如果您处于发布模式,它仍然包含源代码的路径,如果dll是在同一台计算机上构建的,它将导航到该路径并在硬盘驱动器上显示源。
在它发生的那些日子里你可能会复制.dll和.pdb,但是你得到了.dll的新版本,你要么删除了pdb,要么删除了不匹配的版本,所以它停止使用它。