比较发布版本的产品

时间:2008-11-26 05:49:35

标签: c# visual-studio-2005 build-process

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

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

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

3 个答案:

答案 0 :(得分:7)

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

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

有两种选择:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您实际上可以使用DumpBin对忽略每个构建变体的不同构建进行二进制比较。见How to compare binary images of the same project builds。文章说它仅适用于Visual Studio 6,因此我不确定它是否适用于2005年或更长时间..