只是想问问有没有人知道RedGate的Reflector的开源替代品?我感兴趣的是检查类似于反射器的工具是如何工作的。

注意,如果你知道一个免费但非开源的Reflector替代品,你可以回答以下相关问题:

比。net反射器更好的东西?

总结- 2011年5月11日更新

以下是各种开源项目和工具的简要介绍:

通用编译器基础结构(CCI) Mono塞西尔 ILSpy dnSpy (ILSpy的分支,项目看起来比原来更活跃) Dotnet IL编辑器(DILE) IL.View Monoflector(2011年4月不再活跃)

你可能也会对以下资料感兴趣:

TypeView.cs Jason Haley关于分解。net的笔记 Adrian Bank最近的博客文章总结了一些Reflector的替代品,包括下面没有提到的几个选项。 Mark Lichtenberg详细的博客文章比较了几个开源替代品(DILE, ILSpy和Mono Cecil使用MonoDevelop)和Reflector。


当前回答

ILSpy工作得很好!

据我所知,它做了反射器做的所有事情,看起来也一样。

其他回答

2011年12月13日更新

以下是可用的开源工具:

来自SharpDevelop团队的ILSpy。感谢Scott Hanselman在推特上强调了这个工具。 Dotnet IL编辑器(一个反汇编程序) view -一个用Silverlight 4编写的。net反射器替代品,是一个浏览器外的Silverlight应用程序。详见这篇博客文章。

另一个替代品是dotPeek。JetBrains宣布它是一款免费工具。当与Resharper一起使用时,它可能会有更多的功能,但即使单独使用也很好。

用户体验更像是MSVS而不是一个独立的反汇编程序。比起Reflector,我更喜欢阅读代码。Ctrl+T导航也更适合我。仅仅将树与代码窗格同步可能会更好。

总而言之,它仍在开发中,但已经非常好用了。

嗯,Reflector本身是一个。net程序集,所以你可以在Reflector中打开Reflector.exe来查看它是如何构建的。

Actually, I'm pretty sure Reflector is considered a disassembler with some decompiler functionality. Disassembler because it reads the bytes out of an assembly's file and converts it to an assembly language (ILasm in this case). The Decompiler functionality it provides by parsing the IL into well known patterns (like expressions and statements) which then get translated into higher level languages like C#, VB.Net, etc. The addin api for Reflector allows you to write your own language translator if you wish ... however the magic of how it parses the IL into the expression trees is a closely guarded secret.

如果你想了解IL反汇编程序是如何工作的,我建议你看看上面提到的三件事中的任何一件:Dile, CCI和Mono都是很好的来源。

我也强烈推荐Ecma 335规格和Serge Lidin的书。

我使用Reflector的主要原因(我认为也是大多数人使用它的主要原因)是它的反编译器:它可以将方法的IL转换回源代码。

在这一点上,Monoflector将是值得关注的项目。它使用了Cecil,用来反射,还有Cecil。反编译器,它执行反编译。但是Monoflector在这两个库上都有一个UI层,这应该会让你很好地了解如何使用API。

Monoflector也是Reflector的一个不错的选择。它允许您浏览类型并反编译方法,这是人们使用Reflector的99%的功能。这是非常粗糙的边缘,但我认为这将很快改变。