在发布中比较构建产品

4

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

当我连续进行两个发布版本的构建并比较生成的文件时,我得到了不同的文件,通过文本比较,似乎不仅仅是日期时间不同。

如何构建才能每次复制完全相同的产品?

3个回答

7
每次构建时,编译器会嵌入以下内容:
  • 日期和时间
  • GUID(用于调试等)
  • 可能的程序集版本(可能为“1.2.3.*”并自动填充)
  • 可能的强哈希
几个选项:
  • 找出文件在哪里“已知不重要地不同”,擦除这些字节,然后进行比较
  • 使用ildasm将程序集转换为文本,然后比较这些结果。(我还没有检查它是否也揭示了差异 - 如果是这样,那么您需要显式忽略某些部分)
这个问题偶尔会出现,因此我将尝试想出一种工具来进行比较 - 尽管它不太可能处理签名的程序集,因为签名位置可能会有很大变化。

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

0

您实际上可以使用DumpBin进行二进制比较,以忽略每个构建的变化。请参见如何比较同一项目构建的二进制映像。该文章表示仅适用于Visual Studio 6,因此我不确定它是否适用于2005或更高版本..


在VS 2010中,存在dumpbin工具,但在两个连续的dll构建上运行它会产生许多差异。 - Denise Skidmore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接