每次重新编译我们的C#应用程序后,我们得到的EXE文件都具有不同的MD5签名。我们是在同一台机器上、仅几分钟之间进行重新编译的。为什么相同的源代码不能产生相同的输出?有没有办法解决这个问题?
"因此,每个程序集都有:
来源:
"我认为关键在于“相隔几分钟”。如果EXE文件中有时间戳,那么这将改变MD5签名。
很可能您在程序集版本号中有几个星号(*)。这会导致在构建时自动递增程序集版本号,从而导致输出的程序集出现可见差异。因此,MD5校验和也会不同。
尝试将版本号切换为固定的程序集版本,看看是否可以解决该问题。
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
)。然后转储出头部的原始视图,并使用diff工具进行比较。如果仍然没有区别,那么可能是PE头部,需要更高级的工具来发现。不过,Ildasm会给你提供PE头部大小和其他统计信息。将会有一个内置的版本号,每次构建都会更改。