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

Chr*_*cia 8 .net c# visual-studio-2010 disassembly

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

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

Mr.*_*Mr. 5

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

  1. 使用dotPeek反编译实时程序集
  2. 使用dotPeek反编译从TFS新建的同一个程序集
  3. 在两个反编译源上使用Beyond Compare之类的工具
  4. 根据需要合并更改

希望这是你在找什么?

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

维护程序集版本号的最佳实践/指导

祝好运


sof*_*eda 5

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

  • Eric Lippert在他的博客上详细解释了这一点.http://blogs.msdn.com/b/ericlippert/archive/2012/05/31/past-performance-is-no-guarantee-of-future-results.aspx (4认同)
  • 我刚刚使用NDepend并在其中打开了2个版本的二进制文件.在生成的代码差异报告中,它没有显示差异,因此我将使用它来比较2个已知的不同程序集,以确保它确实发现差异.这样我知道我可以信任输出. (2认同)