如何添加PE元数据?

时间:2009-12-28 14:20:04

标签: metadata version portable-executable

Windows PE(可移植可执行文件)文件包含显示在“详细信息”选项卡下的文件“属性”对话框中的元数据。似乎任意元数据都可以出现在那里。

我想要做的是将一段元数据添加到我构建的C#类库中,其值是来自构建项目的git repo HEAD的提交ID。我不能只使用CLR AssemblyVersionAttribute来设置git commit id,因为CLR要求以标准a.b.c.d版本格式显示。此外,我理想地希望在那里保留用户有意义的版本号,但总是有办法查找,给定实际的PE文件,可以重新创建它的提交ID。

如果有一个托管API可以做到这一点,那就更好了,但我愿意P / Invoke来完成这项工作。

2 个答案:

答案 0 :(得分:1)

详细信息选项卡中的信息来自VERSIONINFO资源,但我不确定如何从.NET世界访问该信息...

答案 1 :(得分:1)

啊!我刚刚发现了AssemblyInformationalVersionAttribute,它允许给出一个任意字符串,在所述对话框的Details选项卡中显示为“Product version”值。这看起来可能只是我需要的东西。