我尝试配置 Hudson (3.1.0) 来构建 Delphi XE3 项目 (MSBuild)。
构建批处理:
call "C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\bin\rsvars.bat"
msbuild "X:\Tests\DelphiTest\Project1Test.dproj" /t:Build /v:minimal /p:config="Debug"
在命令行 (cmd.exe) 中运行此批处理 - 构建正确。
当我将此批处理放入 Hudson 时,构建步骤失败,并出现来自 delphi 编译器的错误:
[..]
C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\bin\CodeGear.Common.Targets : warning : Expected configuration file missing - C:\Windows\system32\config\systemprofile\AppData\Roaming\Embarcadero\BDS\10.0\EnvOptions.proj
_PasCoreCompile:
Embarcadero Delphi for Win32 compiler version 24.0
Copyright (c) 1983,2012 Embarcadero Technologies, Inc.
C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\Bin\CodeGear.Delphi.Targets(172,5): error E1026: File not found: 'Controls.res'
[..]
事实上,我在这个位置没有丢失文件。但我在
找到了它
C:\Users\<username>\AppData\Roaming\Embarcadero\BDS\10.0
所以我尝试做虚拟思考,将现有目录复制到丢失的位置,但它不起作用。
我正在使用:Delphi XE3 Enterprise、Win 7 Ultimate (x64)
感谢您的帮助。
最佳答案
这通常发生在您第一次在从未打开 IDE gui (bds.exe
) 的计算机上运行 MSBUILD
或 DCC32
时)并已通过 BDS.exe 内部发生的强制启动环境配置任务。
如果您使用从未用于 Windows 登录、从未运行过 BDS.exe 的帐户作为 Windows 服务登录 Hudson 或 Jenkins,您将遇到此问题。 Microsoft 的 MSBUILD 实用程序必须调用 DCC32,这是许可的商业软件,Delphi 命令行编译许可和环境配置要求您已以帐户运行 IDE,并且您的 jenkins 构建帐户和计算机已获得正确许可。
解决方案:
更改 Jenkins 或 Hudson,以具有运行 Delphi 许可证且至少运行过一次 Delphi 的帐户登录。
如果您无法更改服务器登录名,请使用 Jenkins/Hudson 正在使用的帐户以交互方式登录(通过远程桌面),并配置 Delphi (Rad Studio),以便它可以从该帐户正常运行。
2015 年更新:我现在遇到了与组托管服务帐户相关的全新问题。他们正在使用 Delphi XE8,但我无法获得 GMSA 帐户来使用 Delphi 10 Seattle。如果我确实找到了一种方法,我会更新这个答案,但现在,我建议使用传统的服务帐户,而不是 GMSA,用于 Delphi 与 Jenkins 或 Continua 或其他的持续集成。另请查看 Delphi.wikia.com 以获取更多提示:http://delphi.wikia.com/wiki/Setting_up_a_Delphi_Build_Machine
关于Delphi XE3 构建批处理无法使用 Hudson 或 Jenkins 运行 msbuild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20506509/