以编程方式比较两种方法的IL

时间:2010-09-14 21:38:41

标签: c# reflection intermediate-language

我有一个编译过的程序集。我希望以编程方式将该程序集中某个方法的方法实现与我期望的内容进行比较。

有没有办法可以比较他们的IL?即使我能得到任何指令集的字节数组表示,我也会处于一个好位置。

帮助表示赞赏。

5 个答案:

答案 0 :(得分:4)

使用Mono.Cecil可能是一个很好的起点。 Cecil是一个用于读取和修改CLR程序集的库,并且只要抓取CIL字节码就会为您完成所有文件解析。

您可以使用的另一个潜在库是Boogie

答案 1 :(得分:4)

您可以尝试使用Reflection并使用字节数组比较IL。

看看这个方法:http://msdn.microsoft.com/en-us/library/system.reflection.methodbody.getilasbytearray.aspx

答案 2 :(得分:3)

您可以使用ildasm转储程序集并将两个版本区分开来:

ildasm /ALL /TEXT assembly1.dll > dump1.txt
ildasm /ALL /TEXT assembly2.dll > dump2.txt
fc dump1.txt dump2.txt       

答案 3 :(得分:0)

您可以从visual studio命令提示符处使用ildasm.exe并执行类似ildasm.exe dll name

的操作

答案 4 :(得分:0)

您可以使用ildasmreflector从汇编中提取IL