2010-09-14 67 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