【发布时间】:2018-04-01 22:17:48
【问题描述】:
旧版应用程序会显示其所有组件的版本号,这些组件应该是 DLL。我们出于各种原因通过将 TLB 放在被查询的文件夹中来欺骗应用程序。但是,当它列出版本信息时,它会显示为“未知”,因为 TLB 文件没有文件版本属性。
当我们使用 regasm filename.dll /tlb:filename.tlb 生成 TLB 时,有没有办法让 regasm 生成一个 TLB,使其具有文件版本?我一直无法在网上找到有关此的任何信息。我认为这是不可能的,因此我们必须想出一个解决方法......
【问题讨论】:
-
TBL 文件确实支持文件版本,因此您可以使用工具在 regasm 后添加文件版本,例如:stackoverflow.com/questions/284258/…
-
正确使用 tlb 文件并不是很明显。它们不包含任何代码,只是声明。它们完全等同于 C# 程序集中的元数据。并且通常同样嵌入在实现库的可执行文件中。在一些极端情况下,您也需要部署它们,但它们并不常见。它们确实有一个版本号,只是 major.minor,在 Project > Add Reference > COM 选项卡中可见。检查是否可行,调用 LoadTypeLib 获取 ITypeLib,调用其 GetLibAttr() 方法。
标签: c# windows com regasm fileversioninfo