我所有的代码都在源代码控制下,所以我可以100%确定源代码没有改变。但是如果我构建一个C# DLL两次,它们的内容会略有不同。我可以通过仅构建,然后再次构建来100%重现此问题。
这似乎对程序没有影响,但是像用于从两个MSI文件创建补丁的MSIMSP之类的工具会受到这些微小更改的影响。这使得(我的产品)的补丁比应该大40倍。
我已经反编译了两个DLL和它们的程序集信息、类等...都完全相同。文件大小也完全相同,但当然有不同的创建时间。所以我真的无法理解发生了什么变化。
所以我深入挖掘了一下。
我使用WinDiff查找更改,然后在十六进制编辑器中进行交叉引用。WinDiff显示第二行和约80%的行中有变化。
在十六进制编辑器中,我看到第一个更改的字节是字节0x088(字节136)。这似乎是这个“行”上唯一更改的字节。我很难找到第二个更改,因为WinDiff没有告诉我更改的确切字节偏移量。
熟悉(C#)DLL文件结构的人知道更改的字节可能意味着什么吗?或者更好的办法是如何确保在重新构建它们时DLL文件保持完全相同?