错误:找不到F1026文件:命令行编译器的'System.Actions.dcu'

时间:2016-10-07 09:39:04

标签: delphi delphi-10.1-berlin

当我的某个表单保存时,编辑器会自动添加System.Actions单元。

它在IDE中编译没有问题,但遗憾的是命令行编译器无法找到该文件并给我错误: Error: F1026 File not found: 'System.Actions.dcu'

我错过了什么?

2 个答案:

答案 0 :(得分:3)

在下文中,我假设您正在使用msbuild来编译您的程序。

在XE3中添加了System.Actions单元,以支持FMX和VCL框架中的操作。在该版本发布之前,FMX没有采取任何行动。有些类被移出VCL单元,进入新的System.Actions单元,可以被FMX和VCL代码使用。

因此,您看到的编译器错误向我暗示您无意中使用了此更改之前的版本进行编译。我的猜测是您的IDE是XE3或更高版本,但您的命令行构建配置为使用早期版本的Delphi。最有可能通过PATH环境变量,以及Embarcadero条目恰好是该变量中的第一个。

如果我的预感是正确的,那么你需要确保使用所需的版本进行编译。

我组织具有多个Delphi安装的计算机的方式如下:

  • PATH环境变量中删除所有Embarcadero条目。
  • 每当需要在命令行构建时,请在调用{{1}之前配置环境,例如运行相应的rsvars.bat脚本(在Delphi安装的bin目录中找到) }}。

这样您就不会意外地找到错误的版本,因为您必须明确配置环境。

另一方面,也许你直接调用dcc32。不要这样做。您必须提供已在项目文件中定义的所有选项和路径。重复这只是一种创建维护头痛的方法,并使您的命令行构建可能不会与IDE构建匹配。

相反,使用msbuild来构建程序。这样您就可以使用项目文件中定义的设置。

答案 1 :(得分:0)

感谢Hefferman的建议,但我们会坚持使用dcc32。它更容易定制。例如,我们没有弄清楚如何在msbuild中使用多个'define'参数。可以将dcc32与-NS开关一起用于依赖“使用”,这是我们的解决方案。我们还使用代码创建一些.dpr文件,在这种情况下,我们没有相应的.dproj文件。