比较发布版本的产品

我需要比较VS2005的构建输出,以确保我可以重现完全相同的产品。

当我在发布中一个接一个地做两个构建并比较生成的文件我得到不同的文件,做文本比较似乎不仅仅是日期时间不同

我如何构建以便每次都能重现完全相同的产品?

无论何时构建,编译器都嵌入:

  • 日期和时间
  • 一个GUID(用于调试等,我相信)
  • 可能是assembly版本(可能有“1.2.3。*”并自动填充)
  • 可能是一个强大的哈希

有两种选择:

  • 找出文件“非常不一致”的位置,擦除这些字节,然后进行比较
  • 使用ildasm将程序集转换为文本,然后比较这些结果。 (我没有检查这是否也揭示了差异 – 它可能会这样做,在这种情况下你又必须明确地忽略某些部分)

这个问题确实经常出现,所以我会看看我是否可以提出一个工具来进行比较 – 尽管它不太可能应对签名的程序集,因为签名的位置可能会有很大差异。

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

实际上,您可以使用DumpBin对忽略每个构建变体的不同构建进行二进制比较。 请参见如何比较相同项目构建的二进制图像 。 文章说它只适用于Visual Studio 6,因此我不确定它是否适用于2005年或更长时间..