2008-11-26 140 views
4

我需要比较VS2005的版本输出以确保我可以重现完全相同的产品。比较版本中产品版本

当我做两个版本一个接一个地在释放后,比较所产生的文件,我得到不同的文件,做文本比较,似乎不仅仅是日期时间是不同的

我怎样才能建立以重现每次都完全一样的产品?

回答

7

只要构建,编译器嵌入:

  • 的日期和时间
  • 一个GUID(用于调试等等,我相信)
  • 潜在的组件版本(其可具有 “1.2.3。*” 和自动填充)
  • 潜在强大的散列

几个选项:

  • 了解了文件的“已知immaterially不同”,擦拭这些字节,然后比较
  • 使用ILDASM的组件转换为文本,然后比较这些结果。 (我没有检查这是否也揭示了差异 - 它可能会,在这种情况下,你也不得不明确地忽略某些部分)

这个问题每隔一段时间都会弹出,所以我我会看看我是否可以拿出一个工具来进行比较 - 尽管它不太可能处理已签署的程序集,因为签名的位置可能会有很大差异。

0

一个问题:你做了文字二元构建输出的比较? 据我所知,大多数编译器从不为同一个项目生成二进制相同的编译输出。编译器编码成汇编,特殊序等的二进制时间

0

实际上,您可以使用DumpBin对忽略每个构建版本变体的不同构建进行二进制比较。请参阅How to compare binary images of the same project builds。这篇文章说它只适用于Visual Studio 6,所以我不确定它可以在2005或更高版本上运行。

+0

在VS 2010中,存在dumpbin工具,但在后续的两个生成的dll上运行它无数的差异。 – 2015-03-25 18:11:40