我有一个已编译的程序集。我想以编程方式将该程序集中其中一种方法的方法实现与我期望的方法进行比较。
有没有办法可以比较他们的 IL?即使我可以得到任何指令集的字节数组表示,我也会在一个好地方。
帮助表示赞赏。
我有一个已编译的程序集。我想以编程方式将该程序集中其中一种方法的方法实现与我期望的方法进行比较。
有没有办法可以比较他们的 IL?即使我可以得到任何指令集的字节数组表示,我也会在一个好地方。
帮助表示赞赏。
使用Mono.Cecil可能是一个不错的起点。Cecil 是一个用于读取和修改 CLR 程序集的库,它将为您完成所有文件解析,直至获取 CIL 字节码。
您可能可以使用的另一个潜在库是Boogie
您可以尝试使用反射并使用字节数组比较 IL。
看看这个方法:http: //msdn.microsoft.com/en-us/library/system.reflection.methodbody.getilasbytearray.aspx
您可以使用 ildasm 转储程序集并区分两个版本,如下所示:
ildasm /ALL /TEXT assembly1.dll > dump1.txt
ildasm /ALL /TEXT assembly2.dll > dump2.txt
fc dump1.txt dump2.txt
您可以从 Visual Studio 命令提示符使用 ildasm.exe 并执行类似 ildasm.exe dll 名称的操作