VERSIONINFO资源有一个InternalName 属性。为什么需要这个以及它的意义是什么?它是每个 dll 必需的属性吗?该属性如何使用?
相当主观,但 VERSIONINFO 看起来确实像是由委员会而不是程序员设计的。他们不知道何时停止添加功能,每个人都得到了他们认为重要的东西。确切的推理已经消失在时间的迷雾中,MSDN 也不够具体,无法猜测其意图。
至少部分精神分裂症是该资源既可供人类读取,又填充您在资源管理器中看到的详细信息属性表,以及通过 GetFileVersionInfo() 等机器可读的资源。winapi 使用起来特别痛苦。例如,这确实在某种程度上解释了有两种方法来指定文件和产品版本号的奇怪之处。既可以作为二进制数,也可以作为字符串。也许是为了使字符串可以本地化。
InternalName 适合机器可读的用法,请注意它如何不会显示在“详细信息”属性表中。也许这使它成为“内部”。请注意,OriginalFilename 属性确实出现了,因此是供人类使用的。
由于该财产没有固定用途,因此关于其重要性的指导很少。它没有显示在属性表上,并且 Windows 本身根本不使用它。因此,这完全取决于您想要在此处输入的内容,请注意,这是必需的属性。也许有一天你会用到它,但我个人从未找到过。只需输入您最初在规范中指定的模块名称,只需将 OriginalFilename 设置为相同的字符串,例如附加 .dll 即可。