reflection器的开源替代品?

只是问,如果有人知道RedGate的reflection器的 开源替代品? 我有兴趣查看一个类似于Reflector的工具是如何工作的。

请注意,如果您知道reflection器的免费但不是开源的替代品,则可以回答以下相关问题:

  • 比.NET Reflector更好的东西?

总结 – 2011年5月11日更新

快速总结已经提出的各种开源项目和工具:

  1. 通用编译器基础结构 (CCI)
  2. 单音塞西尔
  3. ILSpy
  4. dnSpy ( ILSpy的 fork,项目比原来显得更加活跃)
  5. Dotnet IL编辑器(DILE)
  6. IL.View
  7. Monoflector (截至2011年4月不再活跃 )

以下资源也可能是有用的:

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

我知道的2个选项。

  • CCI
  • 单音塞西尔

这些不会给你C#。

2011年12月13日更新

以下开源工具可用:

  • 来自SharpDevelop团队的ILSpy 。 感谢Scott Hanselman的tweet,突出了这个工具。
  • Dotnet IL编辑器 (反汇编)
  • IL.View – 在Silverlight 4中作为浏览器外的Silverlight应用程序编写的.NET Reflector替代品。 有关详细信息,请参阅此博文 。

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

用户体验比单独的反汇编程序更像MSVS。 我喜欢阅读代码比在reflection器。 Ctrl + T导航也适合我。 只需将树与代码窗格同步可能会更好。

总而言之,它还在开发中,但已经很好用了。

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

ILSpy的伟大工程!

据我所知,Reflector所做的一切,看起来都一样。

其实,我很确定Reflector被认为是一些反编译器function的反汇编器。 反汇编器是因为它从程序集文件中读取字节并将其转换为汇编语言(在这种情况下为ILasm)。 通过将ILparsing为众所周知的模式(如expression式和语句),然后将其转换为更高级别的语言,如C#,VB.Net等,它提供的反编译器function。reflection器的插件API允许您编写自己的语言翻译器你希望…然而,它如何将IL分解到expression树中的魔力是一个严密的保密的秘密。

如果您想了解IL反汇编程序的工作原理,我build议您查看上面提到的三件事情:Dile,CCI和Mono都是这些东西的好资源。

我也极力推荐使用Ecma 335和Serge Lidin的书。

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

在这一点上, Monoflector将成为值得关注的项目。 它使用reflection的Cecil和反编译的Cecil.Decompiler。 但是Monoflector在这两个库之上分层了一个UI,这应该给你一个关于如何使用API​​的非常好的概念。

Monoflector也是reflection器直接替代品。 它可以让你浏览types和反编译方法,这是人们使用Reflector的99%。 这是非常粗糙的,但我认为这将会很快改变。

那么,Reflector本身就是一个.NET程序集,所以你可以在Reflector中打开Reflector.exe来检查它是如何构build的。

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

该项目托pipe在CodePlex => http://asmanalyzer.codeplex.com/上;

reflection器工具使用reflection。 – 显然这是不正确的。

你问了两件事 – 代码显示reflection器是什么,也是reflection器的替代品。

下面是一个例子,从Reflector的function来看,这个例子很简单,但是它显示了reflection技术: TypeView.cs

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