您是否会推荐一个免费的工具来浏览已编译的.NET程序集。我需要能够:


浏览程序集的源代码并将IL可视化为所选的CLR语言(C#,VB.NET,托管C ++等)
支持类之间的导航(例如,通过Ctrl +单击类名或其他方便的方法)。
允许检查程序集中的嵌入式资源(如果有)(文本,图像等)。
自.NET 2.0版本起能够处理程序集。

可选地,如果它支持,我将很高兴:


将类导出到源文件。
与Visual Studio 2010集成(不需要这样做)免费),以便调试源代码。
与Xamarin Studio IDE(以前的MonoDevelop)进行集成将是一个加分,尽管我对此过于乐观。

几年前我曾经使用过.NET Reflector,并且支持以上大部分功能(实际上是Xamarin集成以外的所有功能)。几周前,我尝试再次使用它,但现在它已成为一种商业产品,旧的免费版本不再起作用。

#1 楼

ILSpy是更流行的FOSS .NET反编译器之一。使用起来非常直观,尽管我还没有尝试过Reflector,所以我无法将它们进行比较。

尽管接近,但它不能完全满足您的要求。尽管它对IL,C#和VB.NET效果很好,但不支持反编译为C ++ / CLI。

您可以单击类和方法名称导航至其定义,或对其进行分析。通过上下文菜单访问它们。它可以从嵌入式资源中渲染图像和文本,并允许您保存它们-我还没有尝试过其他文件类型,但是它们应该以相同的方式工作。

您可以将类导出到源文件,您甚至可以将整个程序集导出到.csproj(MS构建)文件中。对于更简单的项目,可以直接进行编译。许多更复杂的项目往往未经修改就无法编译-值得注意的是,他们的网站提到无法反编译然后自行重新编译。如果需要反编译整个程序集,则可能需要进行大量工作才能使其处于可编译状态。

不幸的是,反编译并不完美。尚不支持某些更复杂的语言构造,例如C#的dynamic,可能会导致输出乱码。您仍然可以通过混乱来获得通用算法,但是如果您只想复制一些代码,则肯定无法使用。

IDE集成。尽管似乎已放弃了Visual Studio的早期尝试。 Xamarin似乎也没有任何集成(何时发生?)。但是,ILSpy的开发人员还创建了SharpDevelop,最近的消息表明他们正在计划与SharpDevelop集成。


如果您需要其他选项,还可以使用dotPeek和JustDecompile。他们确实声称拥有Visual Studio扩展,并且可能会被一些知名公司所完善。我不需要使用它们中的任何一个(ILSpy已经满足了我所需的一切),但是它们可能会更好地满足您的需求。

评论


很好的解释,谢谢! C ++ / CLI是我可以选择的选项,并且导出到整个项目似乎是一个很酷的功能。 Xamarin Studio有点像最近的播放器,因为MonoDevelop(它的前身)几年前的命运还不清楚。 SharpDevelop IDE的支持也会使我深深了解该IDE。我认为乱码输出始终是反编译的问题,并且我怀疑有人会在实际项目中使用一对一的反编译代码。然后,ILSpy似乎可以满足我的需求。

– Ivaylo Slavov
2014年2月7日在22:59

#2 楼

telerik开发了另一个工具-JustDecompile。它的确运行良好,并且具有.NET Reflector的所有功能,以及某些功能。 (包括Visual Studio扩展程序)。它也是免费的,很好。自从问世以来,我就一直使用它。它非常不错。

我最喜欢的功能之一是位于工具菜单“创建项目”下,它可以使用汇编程序并构建一个csproj文件它的。



#3 楼

我个人是Jetbrains的dotPeek的忠实拥护者,因为它与Resharper的关系非常好,并且具有引入.pdb的一些其他功能:



评论


欢迎使用软件建议,并感谢您的参与!虽然这是一个好的开始,但不幸的是,您的帖子所包含的信息不足,无法被视为高质量的答案。请阅读我们关于优质答案的讨论,以了解是否可以将其中的一些改进纳入答案。特别是,您需要指出您推荐的产品如何满足OP的要求。一些稳定性,可靠性和性能指标也可能不错;)谢谢!

– Izzy♦
2014年5月27日下午14:55

#4 楼

在回答问题的时候,这里的答案很好。同时,恕我直言,dnSpy的性能优于它们。

✓可视化为C#或VB.NET-或IL
✓类之间的导航-通过Ctrl + Click
✓进行检查资源-实时预览
?从2.0开始处理.NET-我找不到这么旧的测试程序:-)
✓将类导出到源文件-仅导出整个项目。我无法在单个类中找到它

它还具有其他有用的功能:

直接编辑代码
语法突出显示
调试

我以前使用过dotPeek,但是2年前用dnSpy代替了它,我很高兴。