3

Delphi 2007 中的项目,存储在 SVN 中。

“项目设置 - 版本信息” - 存储项目版本。更改项目版本时 *.dproj 文件和 *.res 文件正在更改。每次项目版本更改时,我都必须将它们提交给 SVN。

我想用 SVN 管理项目版本。例如,当从名为“1.12.2”和修订版 12993 的 svn 标签构建项目时,我想获得一个版本为 1.12.2.12993 的二进制 *.exe 文件。

为此,我应该创建一个 *.rc 文件,其中包含版本信息的文本表示。然后制作一个 *.res 文件并将其包含到带有 {$R version.res} 的项目中

我应该写什么到 *.rc 文件?它的结构应该是什么样的?请白举个例子。

谢谢。

4

3 回答 3

5

VERSIONINFO资源记录在 MSDN 上。典型的此类资源脚本如下所示:

1 版本信息
文件版本 1,12,2,12993
产品版本 1,12,2,12993
文件操作系统 0x40004L
文件类型 0x1L
开始
  块“字符串文件信息”
  开始
    块“000004E4”
      开始
        VALUE“公司名称”、“我的公司\0”
        VALUE "文件描述", "我的程序\0"
        VALUE "FileVersion", "我的程序\0"
        VALUE "LegalCopyright", "My Company 2012\0"
      结尾
  结尾
  块“VarFileInfo”
  开始
    值“翻译”,0x0000 0x04E4
  结尾
结尾
于 2012-10-16T17:16:29.960 回答
2

我们是这样做的:

我们有一个专门的构建机器来构建我们的“官方”二进制文件,然后将它们检入 svn。然后使用特殊注释标签 [Add Project File][Add Res File] 将二进制文件连同 .res 和 .bdsproj 检入 svn。

开发人员被指示不要签入 .bdsproj 和 .res 文件,除非进行了功能更改,在这种情况下,他们需要使用特殊标签。

SVN 使用预提交挂钩来阻止没有特殊标签的 .res 和 .bdsproj 签入。

当我们创建一个新的项目分支时,我们有一个实用程序(我认为是 FindAndReplace.exe)来更新 .bdsproj 文件中的所有版本信息以匹配。

这不是您要寻找的,因为我们没有将 SVN 构建作为其中的一部分。但这是可以做到的,作为这种方法的延伸。

于 2012-10-16T17:26:05.610 回答
2

我们也使用 VERSIONINFO,但我们使用 SVN 修订号代替内部版本号,可以使用 SubWCRev 实用程序通过关键字替换来提供。有关详细信息,请参阅Tortoise dox。它允许您从 SVN 获取与特定 .exe 相对应的正确源快照

于 2012-10-16T21:20:58.643 回答