我知道ReSharper Ultimate将一个插件加载到Visual Studio中,可以对外部代码进行反编译,因为之前我曾无意对各种事情进行了反编译。但是现在我处在一个实际上有用的情况下,实际上我无法显示反编译视图。

我正在调试Visual Studio扩展,并且遇到了一个操作,在该操作中尝试实例化表单设计器会导致在我的代码的上一次调用之外,导致NullReferenceException数十个堆栈帧(以及多个Managed To Native Transition往返)。我可以在调试器中加载符号并检查调用堆栈,它看起来像是与名称解析有关的事情,但是名称是框架中类型的名称,而不是我自己的代码,因此我不知道发生了什么或如何解决。

能够使用此反编译功能肯定很不错,因为我知道我可以查看该功能的内容并弄清楚出了什么问题,但是无论我查看哪些菜单,我都无法弄清楚该怎么做。得到它给我一个外部堆栈框架的反编译。

有谁知道如何做到这一点?

最佳答案

ReSharper不会从调用堆栈窗口反编译。我想主要原因是您将无法调试该代码或设置断点,因为它只是反编译的代码,并且不包含调试信息。而且我认为,如果确实从调用堆栈窗口中进行了反编译,则您希望调试也能正常进行。

相反,您可以做的是使用dotPeek充当符号服务器。它将启动HTTP服务器并侦听程序集的调试文件的请求。如果加载了程序集,它将对其进行反编译,生成一个.pdb文件并将其提供给Visual Studio。然后,您可以双击调用堆栈中的框架,并导航到刚刚反编译的源。

您可以read more about it in the documentation

关于c# - 如何使ReSharper Ultimate反编译堆栈帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39492397/

10-11 18:21