建立:
ildasm projectName.exe /out:test.txt 在两台机器的.exe上执行. 问题:
我花了一些时间创建一个应用程序来获取.NET可执行文件的CRC,并成功忽略了所有不同的构建时数据.
我正在删除// =============== CLASS MEMBERS DECLARATION ===================ildasm.exe输出行上方的所有数据.这忽略了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,`
Run Code Online (Sandbox Code Playgroud)
任何见解都会非常感激.
我试图测试Visual Studio从相同的代码生成可预测/可重复的可执行文件.
为此,我正在创建一个小程序(一个.cpp文件)并构建.exe(A),进行一些更改并制作另一个.exe(B),然后取消更改并制作另一个.exe( C).
我的理论是A和C的信息是相同的,并确认MSVS从相同的代码生成可预测/可重复的.exe.
几个问题:
(我已经在.txt中保存了命令的结果)
我已经使用dumpbin/rawdata来删除时间/日期戳数据并保存文件每个部分的原始内容(不完全确定"原始"意味着什么),但与windiff比较时留下2行差异.
运行dumpbin/headers显示调试目录下的.rdata部分(原始数据#2)的差异; 差异在时间(预期)和格式:X,{Y},"差异在这里",Z列.
我搜索论坛和msdn几个小时,无法找到使用dumpbin的解决方案.类似的论坛帖子以耸耸肩膀结束.
任何人都可以帮我一把吗?我会尽力按要求添加更多特异性.
谢谢你,ZayJay
已查看参考文献:
http://support.microsoft.com/kb/177429
http://support.microsoft.com/kb/164151
http://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx
http://www.ms-news.net/f3614/how-can-i-compare-2-executables-1980031.html
+其他...
此外,在我的.cpp和一个新的.cpp之间进行比较,主要只返回0,在同一区域产生差异.我希望dumpbin/headers结果的.text(原始数据#1)部分存在差异......任何阅读或直接答案的内容都会很棒!谢谢!