est-il possible de dire si un assembly a changé?
J'ai un projet standard qui génère un assemblage appelé myassembly.dll. p>
dans un projet séparé, j'ai lu l'assemblage et génère un hachage . P>
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? P> merci p> Rohan P> < / p>
6 Réponses :
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. P>
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.
Eh bien, si c'est un assemblage que vous gérez vous-même, je vais suggérer ajouter un versionNumber et Augmentation automatique a> le numéro de version à chaque fois que vous construisez cet assemblage. p>
alors vous pouvez vérifier sur la versionNumber à la place. P>
Le numéro de version est la bonne façon de vérifier si un assemblage a changé, est compatible.
C'est, mais cela pourrait être la DLL provient d'une source externe qui ne maintient pas ses versionnumbers (honte sur eux!).
Incrémentation de la version chaque fois qu'une construction a lieu ne me dise pas si le code a changé. Vous voulez vraiment que je veux vraiment faire, c'est vérifier après un rectoplie si un assemblage a changé. Je ne veux pas faire de la construction sélective ou de créer des scripts de construction personnalisés pour uniquement créer des projets qui ont changé.
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é. p>
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) p>
Pour le moment, ce n'est pas trivial en effet - cependant, j'ai soulevé deux billets pour La plate-forme .NET elle-même, ainsi que pour ILSPY - à ma meilleure compréhension, ce sont les meilleurs candidats où une fonctionnalité particulière pourrait être mise en œuvre à l'avenir. P>
Si vous voulez voir des alternatives de la manière dont il pourrait être mis en œuvre pour le moment, voir la description du billet. P>
fournir maintenant ici les deux liens: p>
.NET plate-forme - https://github.com/dotnet/core/ Problèmes / 5577 P> li>
iLspy - https://github.com/icshaarpcode/ilspy/issues/ 2220 p> li> ul>
Chaque assembly a un https://docs.microsoft.com/en-us/dotnet/api/system.reflection.module.moduleversideid?view = Net-5.0 p> p> MODULEVERSIONID CODE> 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.
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