7
votes

Comment vérifier si un assemblage a changé

est-il possible de dire si un assembly a changé?

J'ai un projet standard qui génère un assemblage appelé myassembly.dll.

dans un projet séparé, j'ai lu l'assemblage et génère un hachage .

Lorsque je génère un hachage pour l'assemblage, il est différent à chaque fois que je recompile. J'ai défini la version de montage pour être statique, y a-t-il d'autres attributs que je dois changer? xxx

merci

Rohan < / p>


2 commentaires

Combien de cours auriez-vous dans cette assemblée?


N'importe quel nombre de classes, pour le moment il n'y a qu'une seule classe


6 Réponses :


2
votes

Vous pouvez stocker le hachage dans un fichier texte après sa génération, puis vérifiez-y la prochaine fois que vous recompilez.


1 commentaires

C'est ce que je fais ce que je fais, même quand il n'y a aucune modification au code, un recomplie génère un nouveau hachage.




6
votes

Vous aurez probablement besoin d'utiliser l'attribut numéro de version. Un hachage ne fonctionnera pas car chaque fois que vous recompilez une assemblée, cela sera différent - même si le code n'a pas changé du tout. La raison en est que chaque fois que vous compilez, le compilateur intègre un guide à l'assemblage et met le même guid dans le fichier .pdb correspondant. Le GUID changera chaque fois que l'assemblage est compilé.

Voici comment le débogueur correspond à un assemblage à la version correcte de son fichier .pdb (c'est aussi pourquoi vous devez toujours enregistrer le fichier .pdb sur tout ce que vous publiez, et vous ne pouvez pas compter sur la possibilité de générer un PDB pour correspondre à la correspondance. un assemblage existant)


0 commentaires

1
votes

Ce projet semble Pour faire le tour en désassemblant chaque fichier et déposer le GUID mvid avec quelques autres bits avant de générer un MD5 hachage. Il a une dépendance sur .


0 commentaires


3
votes

Chaque assembly a un MODULEVERSIONID GUID qui fonctionne comme un hachage. Si vous modifiez un seul caractère, l'ID de module change, mais si vous le retournez, vous récupérez l'ancien identifiant. Il est utile de comparer deux versions d'un assemblage. xxx xxx

https://docs.microsoft.com/en-us/dotnet/api/system.reflection.module.moduleversideid?view = Net-5.0


0 commentaires