以编程方式比较两种方法的 IL
我有一个已编译的程序集。我想以编程方式将该程序集中的方法之一的方法实现与我期望的方法进行比较。
有没有办法可以比较他们的 IL?即使我可以获得任何指令集的字节数组表示,我也会处于一个好的位置。
帮助表示赞赏。
I have a compiled assembly. I want to programmatically compare the method implementation of one of the methods in that assembly with something I expect.
Is there a way I can compare their ILs? Even if I can get a byte array representation of any instruction set, I'll be in a good place.
Help appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以尝试使用反射并使用字节数组比较 IL。
看看这个方法: http://msdn .microsoft.com/en-us/library/system.reflection.methodbody.getilasbytearray.aspx
You could try using Reflection and compare the IL using byte arrays.
Take a look at this method: http://msdn.microsoft.com/en-us/library/system.reflection.methodbody.getilasbytearray.aspx
使用 Mono.Cecil 可能是一个不错的起点。 Cecil 是一个用于读取和修改 CLR 程序集的库,它将为您完成所有文件解析,直至获取 CIL 字节码。
您可能可以使用的另一个潜在库是 Boogie
Using Mono.Cecil might be a good place to start. Cecil is a library used to read and modify CLR assemblies, and will do all the file parsing for you as far as grabbing the CIL bytecode.
Another potential library you might be able to use is Boogie
您可以使用 ildasm 转储程序集并比较两个版本,如下所示:
You can dump the assemblies using ildasm and diff the two versions like this:
您可以从 Visual Studio 命令提示符中使用 ildasm.exe 并执行类似 ildasm.exe dll name 的操作
you can use ildasm.exe from a visual studio command prompt and do something like ildasm.exe dll name
您可以使用 ildasm 或 reflector 从程序集中提取 IL
You can use ildasm or reflector to extract IL from assembly