【发布时间】:2015-12-02 14:51:43
【问题描述】:
Delphi项目编译过程中,编译器报错如下:
致命:F1027 未找到单元:“System.pas”或二进制等效项 (.dcu)
只有在使用 TFS 构建系统通过 msbuild 构建时才会发生这种情况。
通过如下命令行执行时可以正常工作。
命令:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\msbuild.exe E:\Src\Project\sample.groupproj /v:m /t:Build /p:Config=Release
以下通过 MSbuild 执行失败:
<Exec Command="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\msbuild.exe E:\Src\Project\Sample.groupproj /v:m /t:Build /p:Config=Release"/>
注意:设置了以下环境变量:BDS,BDSLIB,BDSCOMMONDIR,BDSINCLUDE
通过CCNET dcc32.exe执行时有额外的参数如-I,-LE,-LN,-O,-R,-U,-NB,-NH,但通过TFS执行时没有这些参数列表.
关于如何解决这些错误的任何想法。
在此先感谢....
【问题讨论】:
-
假设您已运行 RSVars.Bat,您还需要确保您的 DCC32 配置定义了正确的路径。 MSBuild 仅启动 DCC32。尝试使用 DCC32 进行命令行构建。完成该工作后,您可以尝试使用 MSBuild。
-
@Andy_D 是 RSVars.bat 在运行 msbuild exec 任务之前运行。当您启动 cmd 提示符并执行命令时工作正常。该命令封装在msbuild exec任务中并通过TFS构建系统运行时显示错误。
-
所以你运行一个命令提示符,调用 RSVars.Bat 然后运行 DCC32
它编译正确吗?您可能需要在项目级别(即在您的 DProj 文件中)显式设置您的库路径。 -
@Andy_D 当我运行 DCC32 时,我得到一个新的错误,E2032 Illegal character in input file: ' " '
-
@Andy dcc32 失败,因为询问者传递了 XML dproj 文件。为 dcc32 获取正确的参数是一项艰巨的工作。而 msbuild 做到了。建议 dcc32 具有极大的误导性。