J'ai créé une simple application "Hello World" dans VS2005. C'est une application de console directe; il ne contient que les lignes suivantes:Comment puis-je savoir si un "assemblage" a vraiment changé?
Console.WriteLine("Hello World");
Console.ReadLine();
Quand j'ai essayé de reconstruire la même application de la console sans effectuer des modifications (il suffit d'appuyer sur le bouton reconstruction), je reçois un exécutable subtilement différent. (J'ai généré un hachage SHA-1 à partir du 1er et du 2ème exécutable généré, et c'est différent!)
Pourquoi est-ce différent quand il n'y a pas de changement de code? Qu'est-ce qui a vraiment changé? J'ai utilisé un éditeur hexadécimal pour comparer et n'a vu que quelques octets différents.
Je suppose que ma question ultime est, comment puis-je savoir si un "assemblage" a réellement changé? (Bien sûr, sans regarder les versions de fichier, la taille du fichier, etc.)
EDIT
Jusqu'à présent, nous avons établi que la différence réside dans l'en-tête PE (horodatage et des données de débogage). Avant de réinventer la roue, existe-t-il un outil de "comparaison d'assemblage" qui ignore l'en-tête PE?
Merci, Ian
Afin d'ignorer correctement ces octets, j'ai besoin de connaître l'emplacement et la portée de ces octets non? Y a-t-il une documentation que je puisse lire? – Ian
Voici le lien de la documentation au format PE de MSDN: http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx Je voulais dire l'horodatage dans l'en-tête COFF et le contenu du répertoire de débogage. Cependant, je serais très surpris si les outils pour le faire n'existent pas déjà - mais je n'en connais pas un, désolé. – Rup
Wow, vous l'avez cloué. C'est l'horodatage et quelques données de débogage! 4C4953A4 horodatage Fri Jul 23 16:32:36 2010 4C4953A4 cv 6D 000026E4 8E4 Format: RSDS, {F421268D-98D4-4D76-B70D-9C3E398E5426}, 1, C: \ HelloWorld \ HelloWorld \ obj \ x86 \ Déboguer \ HelloWorld.pdb * en utilisant dumpbin/all/rawdata: none – Ian