2010-09-14 69 views
4

我有一个编译程序集。我想以编程方式比较该程序集中某个方法的实现方法与我期望的方法。以编程方式比较两种方法的IL

有没有一种方法可以比较他们的ILs?即使我可以获得任何指令集的字节数组表示形式,我也会处于一个不错的位置。

帮助赞赏。

回答

0

可以使用程序Ildasm.exe从一个Visual Studio命令提示符,然后像做程序Ildasm.exe DLL名称

+0

我的意思是,我需要以编程方式做到这一点。 – 2010-09-14 21:43:44

+0

这篇文章可能会帮助 - 然后 - http://support.microsoft.com/kb/304655 – stack72 2010-09-14 21:47:02

3

可以使用转储组件ILDASM和diff的两个版本是这样的:

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

这很好。但是,我只需要比较两个程序集中单个方法的实现。这两个程序集可能有很多不同之处。 – 2010-09-14 21:57:39

4

使用Mono.Cecil可能是一个良好的开端。 Cecil是一个库,用于读取和修改CLR程序集,并且会为您抓取CIL字节码,为您进行所有文件解析。

您可能能够使用另一个潜在库Boogie

+1

为塞西尔+1。这个库很棒。 – Bobby 2010-09-14 21:57:17