反射器的开源替代品?

时间:2010-03-11 15:00:10

标签: .net reflection open-source reflector

只是想知道是否有人知道RedGate Reflector开源替代方案?我很想知道一个类似于Reflector的工具是如何工作的。

注意,如果您知道免费但开源替代Reflector,您可以回答以下相关问题:

摘要 - 2011年5月11日更新

快速总结已建议的各种开源项目和工具:

  1. Common Compiler Infrastructure(CCI)
  2. Mono Cecil
  3. ILSpy
  4. dnSpy(ILSpy的分支,项目似乎比原来更活跃)
  5. Dotnet IL Editor (DILE)
  6. IL.View
  7. Monoflector(截至2011年4月no longer active
  8. 以下资源也可能有用:

    • TypeView.cs
    • Jason Haley关于disassembling .NET
    • 的说明
    • Adrian Bank's最近blog post总结了许多Reflector的替代方案,包括以下未提及的几个选项。
    • Mark Lichtenberg详细blog post将几个开源替代品(DILE,ILSpy和使用MonoDevelop的Mono Cecil)与Reflector进行比较。

10 个答案:

答案 0 :(得分:175)

2011年12月13日更新

可以使用以下开源工具:

    来自SharpDevelop团队的
  • ILSpy。感谢Scott Hanselman's tweet突出显示该工具。
  • Dotnet IL Editor(反汇编程序)
  • IL.View - 在Silverlight 4中编写的.NET Reflector替代方案,作为浏览器外Silverlight应用程序。有关详细信息,请参阅此blog帖子。

答案 1 :(得分:38)

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

用户体验更像是MSVS,而不是独立的反汇编程序。我喜欢代码阅读比Reflector更多。 Ctrl + T导航也更适合我。只需将树与代码窗格同步就可以了。

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

答案 2 :(得分:31)

我知道的两个选项。

  • CCI
  • Mono Cecil

这些不会给你C#。

答案 3 :(得分:15)

Telerik今天发布了他们自己的反编译工具JustDecompile的测试版。封闭的来源,但是免费且看起来很有希望。

答案 4 :(得分:12)

ILSpy效果很好!

据我所知,它做了Reflector所做的一切,看起来也一样。

答案 5 :(得分:10)

实际上,我很确定Reflector被认为是具有一些反编译功能的反汇编程序。反汇编程序,因为它从程序集的文件中读取字节并将其转换为汇编语言(在本例中为ILasm)。它通过将IL解析为众所周知的模式(如表达式和语句)提供的Decompiler功能,然后将其转换为更高级别的语言,如C#,VB.Net等.Reflector的addin api允许您编写自己的语言翻译器,如果你希望...但是它如何将IL解析为表达树的魔力是一个严密保密的秘密。

如果您想了解IL反汇编程序的工作方式,我建议您查看上述三个方面中的任何一个:Dile,CCI和Mono都是这些东西的好来源。

我也强烈推荐获得Ecma 335规范和Serge Lidin的书。

答案 6 :(得分:8)

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

根据该计数,Monoflector将成为值得关注的项目。它使用Cecil(用于执行反射)和Cecil.Decompiler执行反编译。但Monoflector在两个库的顶部层叠了一个UI,这可以让您非常了解如何使用API​​。

Monoflector也是Reflector的一个不错的替代品。它允许您浏览类型并反编译方法,这是人们使用Reflector的99%。它的边缘非常粗糙,但我认为这会很快发生变化。

答案 7 :(得分:5)

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

答案 8 :(得分:3)

我目前正在开发一个名为Assembly Analyzer的开源反汇编程序/反编译程序。它生成方法的源代码,显示程序集元数据和资源,并允许您遍历依赖项。

该项目托管在CodePlex => http://asmanalyzer.codeplex.com/

答案 9 :(得分:1)

反射器工具使用反射。 - 显然这是不正确的。

你要求两件事 - 代码显示反射器的作用,也是反射器的替代品。

这是一个例子,比Reflector的内容简化得多,但它展示了反射技术: TypeView.cs

我没有关于更换开源Reflector的建议。