【问题标题】:In a Dunit project and exe version info is disabled, how do I get it back?在 Dunit 项目中,exe 版本信息被禁用,我该如何取回它?
【发布时间】:2012-03-27 14:18:47
【问题描述】:

为什么我不能在 Dunit Test 项目中设置版本信息?此项目禁用该复选框,但其他项目则禁用。看截图:

【问题讨论】:

  • 尝试开始一个完全空白的项目,看看是否允许您编辑该设置。如果是这样,那么您就知道它在这个项目中。很可能存在竞争版本资源。
  • 谢谢,但我已经按照我所说的“......但不适用于其他项目。”
  • 我认为这是指不是 DUnit 项目的项目。

标签: delphi version delphi-2010 dunit


【解决方案1】:

您可能在测试项目的源代码中缺少 {$R *.res} 指令。它必须在 .dpr 中,否则您将无法在项目选项中使用此功能。

默认情况下它应该存在,但有时在项目中添加或删除单元时会出现问题。发生这种情况时,它将如下所示:

$R *.res} // notice the missing '{'

如果发生这种情况并且开发人员不知道他们在看什么,他们可能只是删除了有问题的行。

此外,如果测试项目以命令行项目开始,它可能没有此指令。

【讨论】:

  • 在我的情况下 (XE2) dpr 中的资源行不时消失。
  • DPR 文件通常被认为是“由 IDE 拥有”,并且不保证您所做的编辑会被保留。因此,IDE 可能会继续删除您添加的内容。在这种情况下,您必须将其声明添加到您自己的 .pas 单元中,如下所示:{$R MyVersionInfo.res MyVersionInfo.rc}
【解决方案2】:

DUnit 单元测试项目的构造不像其他 delphi 项目,这就是为什么您会看到它默认没有资源文件,而这也是为什么在您放置 {$R *.RES} 声明之前禁用 versioninfo 选项卡的原因在你自己。

DUnit 项目可以使用两种配置之一构建,使用 GUI 测试运行程序(它使用 VCL,但您通常不应该修改,GUI 是固定不变的)或控制台模式测试运行程序。虽然控制台应用程序可以链接资源文件,因此可能具有版本信息,事实上许多控制台应用程序都这样做,但您看到的原因是 DUnit 的测试运行程序框架和单元测试项目不是按照您习惯的方式构建。

这反过来又会混淆 IDE,并且 IDE 会禁用相关部分。您也许可以再次添加 {$R},这似乎已经奏效,因为您接受了 Kenneth 的回答,但我只是想添加一些背景信息,以帮助未来遇到此问题的人。

【讨论】:

  • 刚刚注意到:如果在 .RES 之后有一个空格(因此 {$R *.RES })也会出现这个问题。
猜你喜欢
  • 1970-01-01
  • 2011-12-09
  • 2010-09-20
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
相关资源
最近更新 更多