9

我使用dotPeek v1.2withVS2013 Update 3尝试调试引用的 C# .dll 的代码。我已按照以下教程中的所有指示进行操作:使用 dotPeek 作为符号服务器http://localhost:33417/设置为符号位置等)老实说,我已经阅读了很多类似thisthis的文章,梳理了所有必需的设置,并且真的没有看到调试第 3 方非框架 .dll 的 1 个工作解决方案,所以我不相信从这方面来说这是一个完全工作的产品。

不管怎样,一旦符号服务器启动,dotPeek 应该允许根据他们的文档从 VSNET 的第 3 方程序集中进入并调试代码。我知道要为 dotPeek 选择哪些 .dll,因为我从 Debug -> Windows -> Modules 检查了它们的路径。

我碰巧ReSharper还安装了它,当我右键单击一行代码并选择“转到声明”时,我可以反编译。问题是符号服务器似乎没有做任何事情来帮助在调试时提供代码。相反,ReSharper 提供的反编译源似乎是 VS.NET 想要加入的。问题是我总是收到以下错误:

源文件:C:\Users\username\AppData\Local\JetBrains\ReSharper\v8.2\SolutionCaches_ReSharper.Meijer.Ecommerce.Nav.WebAppServices.-382002776\Decompiler\decompiler\53\66e7ccc2\MyClass.cs

模块:C:\Projects\MyProject\bin\Debug

进程:[24808] vstest.executionengine.x86.exe

源文件与构建模块时不同。您是否希望调试器仍然使用它?

如果我说“是”并且调试器中的步骤似乎位于文件中不存在且不同步的行上。这是有道理的,因为它.cs从“源文件”位置显示类,但从/bin/Debug

但是,我不明白为什么会发生这种情况,因为dotPeek应该提供从 加载的符号,/bin/Debug而不是试图进入任何ReSharper已呈现的反编译源。

我该如何配置它,以便VS2103实际调试从中提供的符号和代码dotPeek

4

1 回答 1

20

一个大问题是您需要确保在工具 -> 选项 -> 调试 -> 符号页面中为缓存目录设置了有效路径。

此外,在主调试选项页面(工具 -> 选项 -> 调试 -> 常规)上,确保您:

  • 取消选中“仅启用我的代码”选项
  • 取消选中“启用 .NET Framework 源步进”选项
  • 选中“启用源服务器支持”选项
  • 取消选中“要求源文件与原始版本完全匹配

还值得检查“将源服务器诊断消息打印到输出窗口”选项,并在尝试进入第 3 方代码时检查输出窗口。它应该有望指出任何问题。

这就是我设置东西的方式,我可以调试第 3 方 dll(显然,在开始调试之前,dotPeek 也需要在程序集资源管理器中加载 .dll)。

于 2014-10-23T08:03:55.350 回答