Reputation: 199
Set up:
ildasm projectName.exe /out:test.txt
is performed on the .exe's from both machines. Question:
I have spent some time creating an application to get the CRC of a .NET executable and have succeeded in ignoring all differing build-time data.
I am removing all data above the // =============== CLASS MEMBERS DECLARATION ===================
line in ildasm.exe output. This ignores the MVID. I am building the .exe without debug information. And lastly, I parse the output for <PrivateImplementationDetails>{GUID}
and ignore those.
I then CRC the remaining text file.
The CRCs are the same when the same project is built on the same computer, but differ when the same project is built on a different computer with identical source code and MSVS 2010 settings.
Does anyone know of any machine-dependent information stored in the assembly of a .NET executable?
Below is an example of the differences. It appears that different IDs are being assigned each object and class, but I find it odd that this would only differ when they code is build on different machines...
`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,`
Any insight would be much much appreciated.
Upvotes: 13
Views: 443
Reputation: 2220
Do both systems have the same number of cores? I could imagine, that when it comes to counting up the variable name suffix, the result can differ depending on the number of threads used for the compiler.
Upvotes: 1