只是想知道是否有人知道RedGate的Reflector的开源替代品?我很想知道一个类似于Reflector的工具是如何工作的.
请注意,如果您知道Reflector 的免费但非开源替代方案,您可以回答以下相关问题:
摘要 - 2011年5月11日更新
快速汇总已建议的各种开源项目和工具:
以下资源也可能是有意义的:
我过去常常喜欢Reflector,但自RedGate接手以来,它已经大幅下滑.现在它迫使我更新(这绝对是荒谬的),有一半时间更新不顺利,而且每次更新都会越来越妨碍我的工作效率.我厌倦了,我准备好了更好的东西.有人知道更好的反汇编吗?
更新:
答案中提到的各种替代品清单 -
可能重复:
比.NET Reflector更好的东西?
可能重复:
反射器的开源替代品?我不认为这是重复的,因为其他问题的联系是关于学习反射器如何工作,这个问题是关于当反射器停止自由时的应对
现在Red-Gate已经说过.NET Reflector将不再是免费的,是否有一种替代方案可以节省获得批准采购订单的痛苦?
好消息是,我们正在准备一个独立的二进制源代码应用程序,即反编译器+汇编浏览器,以探索任何.NET编译代码合法探索的内容.我们没有任何具体的发布日期,但它将在今年发布,而且它将是免费的.通过说"自由",我们实际上意味着"自由".
此外ilspy是一个新的开源工具,它似乎正在取得良好进展.ILSpy是开源.NET程序集浏览器和反编译器.
Red Gate宣布.NET Reflector的免费版本将于2011年2月底停止存在之后开始开发.
偶尔我喜欢花一些时间查看.NET代码,看看事情是如何在幕后实现的.我在String.Equals
通过Reflector 查看方法时偶然发现了这个宝石.
C#
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
public override bool Equals(object obj)
{
string strB = obj as string;
if ((strB == null) && (this != null))
{
return false;
}
return EqualsHelper(this, strB);
}
Run Code Online (Sandbox Code Playgroud)
IL
.method public hidebysig virtual instance bool Equals(object obj) cil managed
{
.custom instance void System.Runtime.ConstrainedExecution.ReliabilityContractAttribute::.ctor(valuetype System.Runtime.ConstrainedExecution.Consistency, valuetype System.Runtime.ConstrainedExecution.Cer) = { int32(3) int32(1) }
.maxstack 2
.locals init (
[0] string str)
L_0000: ldarg.1
L_0001: isinst string
L_0006: stloc.0
L_0007: ldloc.0
L_0008: brtrue.s L_000f
L_000a: …
Run Code Online (Sandbox Code Playgroud) 我开始使用C#时学到的第一件事就是最重要的一件事.您可以使用Reflector或其他工具反编译任何.NET程序集.许多开发人员都不知道这个事实,当我向他们展示他们的源代码时,他们中的大多数都感到震惊.
防止反编译仍然是一项艰巨的任务.我仍在寻找一种快速,简便,安全的方法.我不想混淆我的代码,所以我的方法名称将是a,b,c左右.反射器或其他工具应该无法将我的应用程序识别为.NET程序集.我已经了解了一些工具,但它们非常昂贵.有没有其他方法来保护我的应用程序?
编辑:
我的问题的原因不是防止盗版.我只想阻止竞争对手阅读我的代码.我知道他们会,他们已经做到了.他们甚至告诉过我.也许我有点偏执,但商业竞争对手阅读我的代码并不能让我感觉良好.
假设您有一个在C#中定义的接口.查找提供接口实现的所有类的最简单方法是什么?
蛮力方法是在Visual Studio中使用"查找引用"并手动查看结果以将实现与实现分开,但是对于大型代码库中的接口而言,这些接口被相对较少的实现大量引用,这可以是耗时且容易出错.
在Java中,在代码库上运行javadoc(使用-private选项包含私有类)将生成接口的文档页面(例如Comparable),其中包括接口的所有实现类以及任何子接口(尽管它没有包括实现子接口的类,通过深入查看列出的子接口可以相对容易地确定这些类.这是我正在寻找的功能,但使用C#和Visual Studio.
给定一个DLL文件,我希望能够找到该DLL文件中所有方法的调用.我怎样才能做到这一点?
从本质上讲,我如何以编程方式执行Visual Studio已经执行的操作?
我不想使用像.NET Reflector这样的工具来做到这一点,但反射很好,可能是必要的.
实际上问题应该是为什么Console.WriteLine
只是为了成为一个包装Console.Out.WriteLine
我发现这个小方法使用intellisense,然后打开.NET反射器和'反编译' Console.WriteLine
方法的代码,发现这个:
public static void WriteLine(string value)
{
Out.WriteLine(value);
}
Run Code Online (Sandbox Code Playgroud)
那么为什么这样WriteLine
实现呢?它完全只是一条捷径还是有另一个原因?
是否有可能使用.net反射(或其他工具)来修改和重新编译代码快(即没有倾销源,然后使用Visual Studio的重新编译)?
是否有相当于单反的.NET Reflector?快速谷歌搜索没有找到任何东西......或者我可以在Mono上运行Reflector(比如说,在Mac OS X中)?
reflector ×10
.net ×7
c# ×5
open-source ×2
reflection ×2
clr ×1
decompiling ×1
mono ×1
redgate ×1
reference ×1
resharper ×1
windows ×1