J’essaie de produire un outil assez intelligent pour examiner par programme les binarys de la version finale produits avec un code C # identique compilé sur deux machines séparées à des moments différents et en conclure que le code était identique tout en pouvant détecter les modifications éventuelles dans le code. code c # utilisé pour produire ces fichiers binarys.
J’ai essayé d’utiliser un certain nombre d’approches, mais pour restr bref, je vais m’en tenir à la dernière tentative. Je lance ildasm avec l’option / text sur les fichiers binarys et remplace les GUID pour les champs anonymes, etc. en texte, mais lorsque les fichiers binarys proviennent de différents ordinateurs, je constate que le texte produit par ILDASM / option text est réorganisé. Les fichiers binarys provenant du même code mais compilés par la même configuration sur différentes machines apparaissent également fortement réordonnés. Toute suggestion sur la manière de contrôler cette réorganisation de l’IL serait très appréciée?
À votre santé
PS: Toute stratégie alternative pour y parvenir de manière fiable est également la bienvenue.
En attendant qu’Eric Lippert se réveille 🙂 – wiki de la communauté sur le commentaire de @mikez:
Quand un développeur principal (Eric Lippert) de l’équipe du compilateur parle, vous devez écouter: http://ericlippert.com/2012/05/31/past-performance-is-no-guverage-of-future-results/ contient des informations détaillées. explication et forte recommandation de ne pas le faire (probablement en réponse à cette question précise):
Comstackr deux fois le même programme C # garantit-il la même sortie binary?
Non.
J’ai trouvé qu’une solution conforme à ce qu’Eric Lippert a mentionné dans son message, ce que son client avait choisi de régler, peut être atteinte en réglant l’affinité du processeur pour le processus de compilation sur 01. Après cela, les exécutables / dlls produits sont presque identiques som mvid et guides utilisés. L’exécution d’ILDASM sur ces fichiers binarys avec le mode texte et la construction d’un simple outil de hachage pour supprimer ce type de commande aléatoire fournissent une telle solution. Je ne fais que fournir ces informations dans un souci de réussite et d’aider d’autres personnes susceptibles de faire face à ce problème.