从同一源代码生成的两个 DLL 文件有什么区别
What are these differences in two DLL file generated from the same source code
我所有的代码都在源代码管理之下,所以我 100% 确定源代码没有改变。但是,如果我两次构建 C# DLL,它们的内容会略有不同。我可以通过构建然后再次构建来 100% 地重现问题。
这似乎根本不会影响该程序,但是这些微小的更改会导致 MSIMSP 等用于从两个 MSI 文件创建补丁的工具失效。制作补丁(为我的产品)比应有的大 40 倍。
我已经反编译了两个DLL和它们的汇编信息,类,等等...完全一样。这些文件的大小也完全相同,但创建时间当然不同。所以我真的无法理解发生了什么变化。
所以我挖得更深了。
我使用 WinDiff 查找更改,然后在十六进制编辑器中交叉引用这些更改。 WinDiff 在第二个 'line' 和文件大约 80% 处的一行中显示了变化。
在十六进制编辑器中,我看到更改的第一个字节是字节 0x088(字节 136)。这似乎是此 'line' 上唯一更改的字节。我很难找到第二个更改,因为 WinDiff 没有告诉我更改的确切字节偏移量。
这是更改的图像,右边的文件是较新文件的内容。
是否有人熟悉 (C#) DLL 文件的构成,知道更改的字节可能意味着什么?或者更好的是如何确保 DLL 文件在重建时保持完全相同?
这可能与 Build 和 ReBuild 之间的差异有关
Difference between Build Solution, Rebuild Solution, and Clean Solution in Visual Studio?
if it doesn't think it needs to rebuild a project, it won't. It may
also use partially-built bits of the project if they haven't changed
执行构建会在幕后使用元数据,因此您的 dll 可能会有所不同
Why is a different dll produced after a clean build, with no code changes?
解决方案:
您将需要按照所述执行确定性构建 here
如果您对 dll 进行了更改,那么大小将受到影响我向枚举添加了一些额外的属性,文件变得大约 3kb。
它也可能是由于解压缩导致文件看起来不同而导致的看不见的变化。
我所有的代码都在源代码管理之下,所以我 100% 确定源代码没有改变。但是,如果我两次构建 C# DLL,它们的内容会略有不同。我可以通过构建然后再次构建来 100% 地重现问题。
这似乎根本不会影响该程序,但是这些微小的更改会导致 MSIMSP 等用于从两个 MSI 文件创建补丁的工具失效。制作补丁(为我的产品)比应有的大 40 倍。
我已经反编译了两个DLL和它们的汇编信息,类,等等...完全一样。这些文件的大小也完全相同,但创建时间当然不同。所以我真的无法理解发生了什么变化。
所以我挖得更深了。
我使用 WinDiff 查找更改,然后在十六进制编辑器中交叉引用这些更改。 WinDiff 在第二个 'line' 和文件大约 80% 处的一行中显示了变化。
在十六进制编辑器中,我看到更改的第一个字节是字节 0x088(字节 136)。这似乎是此 'line' 上唯一更改的字节。我很难找到第二个更改,因为 WinDiff 没有告诉我更改的确切字节偏移量。
这是更改的图像,右边的文件是较新文件的内容。
是否有人熟悉 (C#) DLL 文件的构成,知道更改的字节可能意味着什么?或者更好的是如何确保 DLL 文件在重建时保持完全相同?
这可能与 Build 和 ReBuild 之间的差异有关
Difference between Build Solution, Rebuild Solution, and Clean Solution in Visual Studio?
if it doesn't think it needs to rebuild a project, it won't. It may also use partially-built bits of the project if they haven't changed
执行构建会在幕后使用元数据,因此您的 dll 可能会有所不同
Why is a different dll produced after a clean build, with no code changes?
解决方案:
您将需要按照所述执行确定性构建 here
如果您对 dll 进行了更改,那么大小将受到影响我向枚举添加了一些额外的属性,文件变得大约 3kb。 它也可能是由于解压缩导致文件看起来不同而导致的看不见的变化。