Visual Studio或Resharper扩展程序用于反编译代码

24

有没有人知道一个Visual Studio扩展程序,可以反编译程序集并允许你在Visual Studio中查看给定类的代码,而不必离开VS并使用ILSpy或其他“外部”反射工具?我知道Resharper也有一个反射工具,但如果你可以在VS内启动它,那就太好了。


2
我认为Reflector可以做到这一点:http://www.reflector.net/category/visual-studio/ - Chris Sinclair
1
右键单击类并“浏览到定义”编译的类,可以看到反编译代码而不是骨架类。 - LiquaFoo
1
不错,这正是我想要做的。现在只要它再次免费就好了。 - LiquaFoo
2
“kick it off within vs” 是什么意思?使用 ReSharper,您可以直接在 Visual Studio 中导航到反编译的源代码。 - Dmitri Nesteruk
ReSharper内置的dotPeek功能有什么问题吗? - Piers Myers
它之前对我来说不起作用,但后来我意识到我必须在外部源中设置一个设置。有了那个设置,我现在得到了我想要的东西。 - LiquaFoo
5个回答

34

Visual Studio 2017 的新版本现在包含一个实验性功能,称为导航到反编译源代码。它需要您明确启用它(并重新启动 Visual Studio),但一旦您这样做了,就可以查看您的代码引用的程序集的反编译源代码。

例如,如果您将插入符(文本光标)放在方法调用中的方法名称上,然后按F12(默认情况下),它将在 IDE 中打开一个新选项卡,显示该方法的反编译源代码。微软表示,这在幕后使用 ILSpy,但这更方便,不需要安装任何新内容。


这与DotPeek等工具相比如何?我简单看了一下,它似乎非常相似。我想知道在某些情况下它是否能提供更好的结果。编辑:看起来它像其他所有工具一样使用ILSpy。 - rollsch
2
这应该成为新的被接受的答案。R# 已经使用了很多年了,但现在 VS 终于提供了一个完全可行的替代方案。 - Cristian Diaconescu

28
您可以这样做。将光标放在标识符上,选择“ReSharper | 导航 | 转到...”(在VS方案中的键盘快捷键为Alt+`),然后选择“反编译源代码”。这使用与独立工具dotPeek相同的反编译引擎。
请注意,在这样的反编译源代码中,您必须继续使用此相同的导航方法来跟踪定义,因为F12Ctrl+单击会返回对象浏览器。

4
如果您没有这样的命令,请确保在ReSharper的Tools/External Sources选项页面中选择除“Default Visual Studio Navigation”项目以外的任何内容(如https://www.jetbrains.com/help/resharper/2016.1/Navigation_and_Search__Navigate_from_Here__Decompiled_Code.html所述)。 - Hoborg

13
假设默认的快捷键是在聚焦于类/方法时按F12,您可以设置ReSharper自动反编译引用。这样做非常好用,就像外部程序集引用是源代码解决方案中的任何其他类一样。

enter image description here

按下F12并聚焦于new HttpClient()时,您将被指向的源代码示例。

enter image description here


6

我建议您使用.NET Reflector,它具有用于反编译程序集的内置VS集成,比Resharper好得多。请参阅此页面以获取更多知识。


1
它曾经是免费的,但现在需要一次性付款才能获得有效的许可。无论如何,如果您经常反编译程序集,这是一款绝对无价的工具,它的价格是值得的。 - Tommaso Belluzzo
1
很抱歉,我无法给你点赞,因为在 Stack Overflow 上,除非我获得更多积分,否则是不允许的。感谢你的提示。 - LiquaFoo
你能详细说明它比resharper更好在哪些方面吗?这在2018年仍然正确吗? - rollsch

4

http://ilspy.net/是免费且开源的,同时还有一个适用于Visual Studio的插件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接