未找到单位:'System.pas' 或二进制等效项 (.dcu):在 jenkins 上编译
Unit not found: 'System.pas' or binary equivalents (.dcu) : Compiling on jenkins
我正在使用 Jenkins 为测试项目每 15 分钟生成一次自动构建。
为 Delphi 编译时本身没有问题,现在当我通过 jenkins 运行 时出现以下问题...
C:\Program Files (x86)\Embarcadero\RAD
Studio.0\Bin\CodeGear.Delphi.Targets(136,3): error : Project1.dpr(1)
Fatal: F1027 Unit not found: 'System.pas' or binary equivalents (.dcu)
我已经尝试过 运行 通过 windows 命令这种方式。
cd "C:\Users\carlos.santos\Desktop\teste"
call build.bat
和Build.bat这样。
call "C:\Program Files (x86)\Embarcadero\RAD Studio.0\bin\rsvars.bat"
msbuild "Project1.dproj" /p:config=Release /p:Warn=0
我已经尝试通过 Rad Studio 插件本身为 Jenkins 运行 这种方式,但它也没有用。
我已经在一些论坛上看到,如果我有很多路径或者在库路径中没有默认路径 Delphi 可能会出现问题,但我也测试过这个但没有..
这是我的路径。
$ (BDS) \ lib; $ (BDS) \ Imports; $ (BDS) \ Lib \ Indy10; $
(BDSCOMMONDIR) \ Dcp; $ (BDS) \ include; $ (BDS) \ RaveReports \ Lib;
$ (BDSCOMMONDIR) \ Bpl; $(BDS)\lib\debug; $(BDS)\bin; $(DELPHI)\Bin;
rsvars.bat的内容有:
@SET BDS=C:\Program Files (x86)\Embarcadero\RAD Studio.0
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio.0
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727
@SET FrameworkVersion=v2.0.50727
@SET FrameworkSDKDir=
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%
@SET LANGDIR=EN
我的 Delphi 中安装了第三方组件,但我不知道它是否有任何影响。谁能帮助我,将不胜感激。
jenkins 和 cmd 执行的属性之间的区别是:
已解决将参数 _EnvLibraryPath
与我的 Delphi 放在一起
msbuild 调用中的 LibraryPath 参数,示例:
call "C:\Program Files (x86)\Embarcadero\RAD Studio.0\bin\rsvars.bat"
msbuild "C:\Users\carlos.santos\Desktop\teste\Project1.dproj" /p:_EnvLibraryPath="C:\Program Files (x86)\Embarcadero\RAD Studio.0\lib\EN;C:\Program Files (x86)\Embarcadero\RAD Studio.0\lib"
同样的问题可能还有其他原因。
我刚刚经历过并解决了它。
在我的例子中,这与我除了 Release 和 Debug 之外还有另一个配置有关,即 ReleaseConsumer。
我的构建命令包括指定配置:
DoJenkinsTasks "US2D_GUI" "Config=ReleaseConsumer;Platform=Win64"
现在,我遇到了与上述相同的错误。
原因是找不到有dcu文件的ReleaseConsumer文件夹。
我通过在 c:\Program Files (x86)\Embarcadero\Studio.0\lib\win64\ 下创建一个新文件夹 releaseConsumer 并将所有 dcu 文件从 release 复制到它来解决它。
运行 msbuild
加上 /v:diagnostic
选项,你会看到设置了 none 的默认环境路径:
Initial Properties:
___ResourcePath =
__ObjectPath =
__ResourcePath =
_EnvDCPOutput =
_EnvLibraryPath =
_EnvNamespace =
_EnvPackageOutput =
_ObjectPath =
_OutputDRCFiles = false
_ProjectFiles = @(DelphiCompile)
_ResolveGENTLBBindingsTarget =
这是因为您缺少构建服务器上的 %APPDATA%\CodeGear
目录(在 运行 构建的用户下)。
特别是,您需要 CodeGear\BDS.0\EnvOptions.proj
设置文件,其中包含所有环境变量。
将其放置到位,您将看到 msbuild
的诊断显示如下属性:
Initial Properties:
___ResourcePath = C:\Program Files (x86)\Embarcadero\RAD Studio.0\lib;\Imports;C:\Program Files (x86)\Embarcadero\RAD Studio.0\Imports;C:\Users\Public\Documents\RAD Studio.0\Dcp;C:\Program Files (x86)\Embarcadero\RAD Studio.0\include;C:\Program Files (x86)\Embarcadero\RAD Studio.0\lib;C:\Program Files (x86)\Embarcadero\RAD Studio.0\Lib\Indy10;
我正在使用 Jenkins 为测试项目每 15 分钟生成一次自动构建。
为 Delphi 编译时本身没有问题,现在当我通过 jenkins 运行 时出现以下问题...
C:\Program Files (x86)\Embarcadero\RAD Studio.0\Bin\CodeGear.Delphi.Targets(136,3): error : Project1.dpr(1) Fatal: F1027 Unit not found: 'System.pas' or binary equivalents (.dcu)
我已经尝试过 运行 通过 windows 命令这种方式。
cd "C:\Users\carlos.santos\Desktop\teste"
call build.bat
和Build.bat这样。
call "C:\Program Files (x86)\Embarcadero\RAD Studio.0\bin\rsvars.bat"
msbuild "Project1.dproj" /p:config=Release /p:Warn=0
我已经尝试通过 Rad Studio 插件本身为 Jenkins 运行 这种方式,但它也没有用。
我已经在一些论坛上看到,如果我有很多路径或者在库路径中没有默认路径 Delphi 可能会出现问题,但我也测试过这个但没有..
这是我的路径。
$ (BDS) \ lib; $ (BDS) \ Imports; $ (BDS) \ Lib \ Indy10; $ (BDSCOMMONDIR) \ Dcp; $ (BDS) \ include; $ (BDS) \ RaveReports \ Lib; $ (BDSCOMMONDIR) \ Bpl; $(BDS)\lib\debug; $(BDS)\bin; $(DELPHI)\Bin;
rsvars.bat的内容有:
@SET BDS=C:\Program Files (x86)\Embarcadero\RAD Studio.0
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio.0
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727
@SET FrameworkVersion=v2.0.50727
@SET FrameworkSDKDir=
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%
@SET LANGDIR=EN
我的 Delphi 中安装了第三方组件,但我不知道它是否有任何影响。谁能帮助我,将不胜感激。
jenkins 和 cmd 执行的属性之间的区别是:
已解决将参数 _EnvLibraryPath
与我的 Delphi 放在一起
msbuild 调用中的 LibraryPath 参数,示例:
call "C:\Program Files (x86)\Embarcadero\RAD Studio.0\bin\rsvars.bat"
msbuild "C:\Users\carlos.santos\Desktop\teste\Project1.dproj" /p:_EnvLibraryPath="C:\Program Files (x86)\Embarcadero\RAD Studio.0\lib\EN;C:\Program Files (x86)\Embarcadero\RAD Studio.0\lib"
同样的问题可能还有其他原因。 我刚刚经历过并解决了它。 在我的例子中,这与我除了 Release 和 Debug 之外还有另一个配置有关,即 ReleaseConsumer。 我的构建命令包括指定配置:
DoJenkinsTasks "US2D_GUI" "Config=ReleaseConsumer;Platform=Win64"
现在,我遇到了与上述相同的错误。 原因是找不到有dcu文件的ReleaseConsumer文件夹。 我通过在 c:\Program Files (x86)\Embarcadero\Studio.0\lib\win64\ 下创建一个新文件夹 releaseConsumer 并将所有 dcu 文件从 release 复制到它来解决它。
运行 msbuild
加上 /v:diagnostic
选项,你会看到设置了 none 的默认环境路径:
Initial Properties:
___ResourcePath =
__ObjectPath =
__ResourcePath =
_EnvDCPOutput =
_EnvLibraryPath =
_EnvNamespace =
_EnvPackageOutput =
_ObjectPath =
_OutputDRCFiles = false
_ProjectFiles = @(DelphiCompile)
_ResolveGENTLBBindingsTarget =
这是因为您缺少构建服务器上的 %APPDATA%\CodeGear
目录(在 运行 构建的用户下)。
特别是,您需要 CodeGear\BDS.0\EnvOptions.proj
设置文件,其中包含所有环境变量。
将其放置到位,您将看到 msbuild
的诊断显示如下属性:
Initial Properties:
___ResourcePath = C:\Program Files (x86)\Embarcadero\RAD Studio.0\lib;\Imports;C:\Program Files (x86)\Embarcadero\RAD Studio.0\Imports;C:\Users\Public\Documents\RAD Studio.0\Dcp;C:\Program Files (x86)\Embarcadero\RAD Studio.0\include;C:\Program Files (x86)\Embarcadero\RAD Studio.0\lib;C:\Program Files (x86)\Embarcadero\RAD Studio.0\Lib\Indy10;