设置:
ildasm projectName.exe /out:test.txt
在两台机器的.exe上执行。 问题:
我花了一些时间创建一个应用程序来获取.NET可执行文件的CRC,并成功地忽略了所有不同的构建时数据。
我正在删除ildasm.exe输出中// =============== CLASS MEMBERS DECLARATION ===================
行以上的所有数据。这忽略了MVID。我正在构建没有调试信息的.exe。最后,我解析<PrivateImplementationDetails>{GUID}
的输出并忽略它们。
然后我将CRC剩余的文本文件。
当同一个项目在同一台计算机上构建时,CRC是相同的,但是当在具有相同源代码和MSVS 2010设置的不同计算机上构建相同项目时,它们会有所不同。
有没有人知道存储在.NET可执行文件程序集中的任何机器相关信息?
以下是差异的示例。似乎每个对象和类都分配了不同的ID,但我觉得奇怪的是,当它们的代码构建在不同的机器上时,这只会有所不同......
`class DSC_PI.MainWindow/'<>c__DisplayClass21' V_2,`
`class DSC_PI.MainWindow/'<>c__DisplayClass10' V_2,`
`class DSC_PI.MainWindow/'<>c__DisplayClass1e' V_3,`
`class DSC_PI.MainWindow/'<>c__DisplayClassd' V_3,`
非常感谢任何见解。
答案 0 :(得分:1)
两个系统的内核数量是否相同?我可以想象,当计算变量名后缀时,结果可能会有所不同,具体取决于编译器使用的线程数。