首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未链接到源的C#接口调试信息

未链接到源的C#接口调试信息
EN

Stack Overflow用户
提问于 2011-11-17 10:55:15
回答 1查看 729关注 0票数 3

我正在尝试重新编排一个非常大的解决方案的布局,这个解决方案已经变得不可能很难使用了。我的计划是创建一些包含相关项目的解决方案,然后在必要时使用二进制引用来链接到其他解决方案生成的库。

我们所依赖的东西是Resharper导航到外部源功能,因此我们可以轻松地从其他解决方案中浏览我们所引用的项目的源代码。我不明白为什么VS不能这么做。

对于有实现的类,这一切都很好地工作。然而,对于只包含自动实现的属性的C#接口和类,Resharper无法浏览源代码,而回到粗糙的元数据查看器中。

我使用srctool.exe来浏览.pdb文件中列出的源,并且很明显,这些接口和空(Ish)类的源没有在pdb文件中引用。如果我将自动实现的属性切换到具有支持字段的属性,则源链接将出现在pdb中。

我猜源被排除在外了,因为没有地方可以在接口和自动实现的属性上设置断点。

不过,我想知道,我们是否可以使用一些奇特的编译器选项或解决方法来强制PDB文件包含对C#接口源的引用。

谢谢,马克

EN

回答 1

Stack Overflow用户

发布于 2014-07-16 14:50:32

这个问题没有足够的细节。我想你是通过将项目引用转换为程序集引用来解决缓慢的大规模解决方案的问题的。并以这些项目的版本构建为参考。

是的,这会阻止任何试图从PDB中查找源代码文件的工具。.NET项目的版本构建使用了PDB的剥离版本,所有源代码文件和行号信息都已从其中删除。对于真正的版本构建来说,这是非常正常的事情。正常发布构建的代码是优化的。这将导致代码被重新排序,不再匹配源文件中代码的逻辑位置。任何信息,你从source+line的PDB信息现在往往得到之间的有害和无用,你开始在错误的地方寻找一个问题。

然而,这是,而不是,而是关心IDE工具或调试您的应用程序。在这种情况下,优化器会被自动禁用。实际上是VS中的一个配置项: Tools + Options,Debugging,General,“configuration优化on模块load”选项。默认打开。

显然,当没有机会找到源文件时,任何使用PDB的工具都会变得紧张。修复方法是返回到原始项目,再次选择并更改设置: project + Properties、Build选项卡、向下滚动、Advanced按钮。将“调试信息”组合从“pdb-只”更改为“完整”。重建这个项目。

应该能解决你的问题。还可以恢复调试器,您可以再次进入源代码。

不要移动太多的文件--顺便说一遍,你可能会再次翻过垃圾堆。至少将PDB与DLL保持在同一个目录中。如果源代码不再出现在同一个目录中,但在另一个目录中再次签出,则必须将其告知IDE。右键单击“解决方案、属性、调试源文件”设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8165934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档