从 C# 反汇编代码

本文关键字:代码 反汇编 | 更新日期: 2023-09-27 18:31:31

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

在以前的项目中,我使用了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);
}

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

从 C# 反汇编代码

我没有

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