从c#中反汇编代码

时间:2014-11-21 08:25:38

标签: c# build disassembly

关于改进我的构建和部署例程,我希望比较两个不同程序集的代码。我无法比较文件大小和创建日期,或程序集的二进制内容,因为这些可能会有所不同,即使程序集在逻辑上是相同的。

在之前的项目中,我使用了ildasm.exe并为每个程序集生成了一个文本文件,并在稍作修改后进行了比较,但我宁愿在c#代码中执行此操作而不运行Process.Start()。

作为例子,我希望做这样的事情:

public bool AssemblyComparer(string path1, string path2)
{  
  var text1 = MagicLibrary.Disassemble(path1);
  var text2 = MagicLibrary.Disassemble(path2);
  return text1.Equals(text2);
}

有关如何执行此操作的任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

我还没有使用它但据我所知Mono.Cecil是一个库,您可以使用它从程序集中检查程序中的IL代码。见Mono.Cecil by jbevain。但我认为它不像您在代码片段中那样易于使用。