I created a simple "Hello World" application in VS2005. It's a straight-forward console application; it only contains the following lines:
Console.WriteLine("Hello World");
Console.ReadLine();
When I tried to rebuild the same console application WITHOUT performing any changes (just press the rebuild button), I get a subtly different executable. (I generated a SHA-1 hash from both the 1st and 2nd generated executable, and it's different!)
Why is it different when there are no code changes? What actually changed? I used a hex editor to compare and only saw a couple different bytes.
I guess my ultimate question is, how can I know if an "assembly" really did change? (Of course without looking at File versions, file size, etc)
EDIT
So far, we've established that the difference lies in the PE header (timestamp and some debug data). Before I re-invent the wheel, is there an "assembly comparison" tool that ignores the PE header?
Thanks, Ian