【问题标题】:Unit not found: 'System.pas' or binary equivalents (.dcu) : Compiling on jenkins未找到单元:“System.pas”或二进制等效项 (.dcu):在 jenkins 上编译
【发布时间】:2023-03-11 10:08:01
【问题描述】:

我正在使用 Jenkins 为测试项目每 15 分钟生成一次自动构建。

当为 Delphi 本身编译时不会出现问题,现在当我通过 jenkins 运行时,它会出现以下问题...

C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\Bin\CodeGear.Delphi.Targets(136,3):错误:Project1.dpr(1) 致命:F1027 未找到单元:“System.pas”或二进制等效项 (.dcu)

我已经试过用windows命令这样运行了。

cd "C:\Users\carlos.santos\Desktop\teste"
call build.bat

并以这种方式构建.bat。

call "C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\rsvars.bat"
msbuild "Project1.dproj" /p:config=Release /p:Warn=0

我已经尝试通过 Rad Studio 插件本身为 Jenkins 运行这种方式,但它也不起作用。

我已经在一些论坛上看到,如果我有很多路径或者库路径中没有 Delphi 的默认路径可能会出现问题,但我也对此进行了测试,但什么也没有..

这是我的路径。

$(BDS)\lib; $(BDS)\进口; $(BDS)\Lib\Indy10; $ (BDSCOMMONDIR)\Dcp; $(北斗)\包括; $(BDS)\RaveReports\Lib; $(BDSCOMMONDIR)\ BPL; $(BDS)\lib\debug; $(BDS)\bin; $(德尔福)\Bin;

rsvars.bat 的内容在那里:

@SET BDS=C:\Program Files (x86)\Embarcadero\RAD Studio\7.0
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.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执行的属性的区别是:

【问题讨论】:

    标签: delphi jenkins msbuild jenkins-plugins delphi-2010


    【解决方案1】:

    使用/v:diagnostic 选项运行msbuild,您将看到没有设置任何默认环境路径:

    Initial Properties:
    ___ResourcePath                = 
    __ObjectPath                   = 
    __ResourcePath                 = 
    _EnvDCPOutput                  = 
    _EnvLibraryPath                = 
    _EnvNamespace                  = 
    _EnvPackageOutput              = 
    _ObjectPath                    = 
    _OutputDRCFiles                = false
    _ProjectFiles                  = @(DelphiCompile)
    _ResolveGENTLBBindingsTarget   = 
    

    这是因为您缺少构建服务器上的 %APPDATA%\CodeGear 目录(在运行构建的用户下)。

    尤其需要CodeGear\BDS\7.0\EnvOptions.proj 设置文件,其中包含所有环境变量。 把它放在适当的位置,你会看到msbuild 的诊断显示像这样的属性:

    Initial Properties:
    ___ResourcePath                = C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\lib;\Imports;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\Imports;C:\Users\Public\Documents\RAD Studio\7.0\Dcp;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\include;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\lib;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\Lib\Indy10;
    

    【讨论】:

      【解决方案2】:

      同样的问题可能还有其他原因。 我刚刚经历并解决了它。 就我而言,这与我除了 Release 和 Debug 之外还有另一个配置有关,即 ReleaseConsumer。 我的构建命令包括指定配置:

      DoJenkinsTasks "US2D_GUI" "Config=ReleaseConsumer;Platform=Win64"
      

      现在,我遇到了与上述相同的错误。 原因是它找不到带有 dcu 文件的 ReleaseConsumer 文件夹。 我通过在 c:\Program Files (x86)\Embarcadero\Studio\19.0\lib\win64\ 下创建一个新文件夹 releaseConsumer 并将所有 dcu 文件从 release 复制到它来解决它。

      【讨论】:

        【解决方案3】:

        已解决将参数 _EnvLibraryPath 与我的 Delphi msbuild 调用时的 LibraryPath 参数,示例:

        call "C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\rsvars.bat"
        msbuild "C:\Users\carlos.santos\Desktop\teste\Project1.dproj" /p:_EnvLibraryPath="C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\lib\EN;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\lib"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-05
          • 1970-01-01
          • 2021-05-17
          • 2023-04-01
          • 1970-01-01
          • 2018-02-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多