2009-12-28 17 views
1

Les fichiers Windows PE (exécutable portable) contiennent des métadonnées qui apparaissent dans la boîte de dialogue Propriétés du fichier sous l'onglet Détails. Il semble que des métadonnées arbitraires peuvent apparaître ici. Ce que je voudrais faire est d'ajouter un morceau de métadonnées à une bibliothèque de classe C# que je construis dont la valeur est l'ID de validation du git repo HEAD à partir duquel le projet a été construit. Je ne peux pas simplement utiliser le CLR AssemblyVersionAttribute pour définir l'ID de validation git car le CLR requiert que cela apparaisse dans le format de version standard a.b.c.d. De plus, j'aimerais idéalement garder le numéro de version significatif pour l'utilisateur, mais toujours avoir un moyen de rechercher, étant donné le fichier PE réel, l'identifiant de validation qui pourrait le recréer.Comment ajouter des métadonnées PE?

S'il y a une API managée pour le faire, tant mieux, mais je suis prêt à P/Invoke pour y arriver.

+0

Checkout: [mythe de métadonnées CLR dans un module géré?] (Http://izlooite.blogspot.com/2009/09/what-is-clr-metadata-in-managed-module.html#more) –

Répondre

1

Les informations contenues dans l'onglet Détails provient d'une ressource VERSIONINFO mais je ne sais pas comment vous accès que dans le monde .NET ...

+0

Intéressant . Si c'est vrai, je suppose que des données arbitraires ne peuvent pas être ajoutées à cet onglet. :( –

+1

Vous pouvez ajouter des données arbitraires aux champs d'informations sur la version de chaîne d'exe, mais pas toujours sur la page de propriétés de l'explorateur En fait, la page de propriétés affichée dépend de la version de Windows Explorer. , mais pas sur Vista ou Win7. – Francis

1

Ah! Je viens de découvrir le AssemblyInformationalVersionAttribute, qui permet de donner une chaîne arbitraire qui apparaît comme la valeur "Product version" dans l'onglet Details de la boîte de dialogue. Cela semble être juste la chose dont j'ai besoin.

Questions connexes