有没有办法区分两个.NET可执行文件?

时间:2012-07-09 23:00:53

标签: c# .net visual-studio-2010 disassembly

我们最近有一位开发人员离开我们的组织。我们不确定他在生产服务器上放置的可执行文件的版本是否与当前在TFS中的版本相同。有没有办法(除了使用Just Compile或ILDASM之类的东西)从TFS构建项目并将该可执行文件与当前生产服务器上的可执行文件进行比较?

更新:我正在尝试Just Decompile,并且我已经加载了两个二进制文件,因此我逐步浏览每个命名空间,成员等,以便将它们相互比较。我习惯在Visual Studio中使用Schema Compare来比较2个数据库的模式,并查看更新,删除和添加的项目,并突出显示差异。是不是有一些工具可以采用这两个反编译的二进制文件并以某种方式强调差异?

3 个答案:

答案 0 :(得分:5)

现在我只能想到这种方法:

  1. 使用dotPeek反编译实时程序集
  2. 使用dotPeek反编译从TFS新建的同一个程序集
  3. 在两个反编译源上使用Beyond Compare等工具
  4. 根据需要合并更改
  5. 希望这是你要找的东西?

    在版本控制方面可能对未来有益的其他阅读因此你知道什么dll包含哪些功能(对你来说可能有用也可能没用,如果我告诉你一些明显的东西,请原谅我):

    Best practices/guidance for maintaining assembly version numbers

    祝你好运

答案 1 :(得分:5)

是的,使用NDepend可以在两个.Net程序集之间进行区分。虽然即使两次完全相同的源编译也不会生成完全相同的组件。

答案 2 :(得分:0)

我们用于详细比较的产品,包括二进制文件的比较,是Beyond Compare。当我们第一次得到产品时,我认为这将是有限的实用性,但它帮助我们解决了一些非常棘手的问题。它比较目录,文本文件,二进制文件,mp3,图片和软件版本。它也不是特别贵。

我只是在Release和Debug中针对应用程序的二进制文件运行产品,它突出显示了每个差异。

我确信您可以针对两个二进制文件运行ILDASM并进行眼球比较,但像这样的工具可能会反复收回成本。