我不能在我继承的这个旧的Delphi项目中包含版本号。我如何解决它?

时间:2020-03-06 14:42:23  来源:igfitidea点击:

我有一个必须维护的旧的Delphi代码库,很多DLL,有些比其他的更旧。在某些这些DLL中,"项目选项"对话框中没有版本信息。添加版本的控件显示为灰色,我什至无法通过手动编辑.DOF文件来添加版本号。如何在这些项目中包含版本号?

解决方案

检查项目源位置中是否存在默认的.RES文件。 Delphi在.res文件中包含与.dpr文件同名的项目版本号。如果.RES文件不存在,重新创建它的最简单方法是在uses子句之后立即将{$ R * .RES}编译器指令添加到.DPR文件中。

library foolib;    

uses
    foo in 'foo.pas',
    baz in 'baz.pas';

{$R *.RES}

exports
    foofunc name 'foofunc';

end;

一旦添加了{$ R * .RES}编译器指令,Delphi就会告诉我们它已经重新创建了foolib.res资源文件。

我们可以使用$ R指令在Delphi下创建的库中创建和嵌入资源文件。

此链接包含与构建RES文件有关的信息。
Delphi有自己的资源编译器:BRCC32

我使用一个构建控制系统(FinalBuilder),它能够将版本资源添加到所有连贯的DLL和EXE中。因此,我可以确信文件集都标记有相同的内部版本。有些Delphi项目默认没有版本,FB仍会为我们添加它们。

.dpr文件中似乎缺少资源指令" {$ R * .RES}"(或者包含在条件定义中),因此IDE找不到它。

在dll中包含版本信息有些不稳定。如果指定lib_suffix,则不会更新版本信息。