gpt4 book ai didi

delphi - MSBuild 和多个 Delphi 版本

转载 作者:行者123 更新时间:2023-12-03 18:14:30 25 4
gpt4 key购买 nike

我有一个项目需要构建两个可执行文件:一个在 Delphi XE2 下,一个在 XE3 下。我有一个构建每个版本的构建脚本(即一个用于 XE2 的脚本和一个用于 XE3 的脚本)。

如果我为我运行的最后一个版本的 IDE 运行构建脚本,一切正常(即运行 Delphi XE2,构建应用程序,运行 XE2 构建脚本)。

但是,如果我在运行构建脚本的同时运行不同版本的 IDE,我会在我的应用程序启动时立即获得 AV(即运行 Delphi XE2,构建应用程序,运行 XE3 构建脚本)。

看起来好像构建脚本的某些内容正在被 IDE 缓存/修改,我需要为我想要构建的版本恢复适当的数据。我已经用 .dproj 试过了,但没有成功。

或者它可能正在加载表单资源 - 如果 IDE 在启动时由于不存在的属性,这两个版本都显示错误。如果是这样,是否有一种简单的方法可以解决这个问题而无需维护所有 .fmx 文件的多个版本?

这是一个示例构建脚本:

set path=%path%;c:\Windows\Microsoft.NET\Framework\v3.5
set path=%path%;c:\Program Files (x86)\Embarcadero\RAD Studio\10.0
set path=%path%;c:\Documents and Settings\All Users\Documents\RAD Studio\10.0
set BDS=c:\Program Files (x86)\Embarcadero\RAD Studio\10.0
set FrameworkDir=c:\Windows\Microsoft.NET\Framework\
set FrameworkVersion=v3.5

set failed=false
cd \myprogs\monkeystyler
msbuild monkeystyler.dproj /t:build /p:config=full||set failed=true
cd build
if not %failed%==true goto Done

echo ****FAILED TO BULD MONKEYSTYLER
****
Pause
exit

:done

最佳答案

让我们看一下 XE3 脚本中的这一行:

set path=%path%;c:\Program Files (x86)\Embarcadero\RAD Studio\10.0

我的猜测是您在 XE2 脚本中使用:

set path=%path%;c:\Program Files (x86)\Embarcadero\RAD Studio\9.0

此时你的路径变量看起来像这样:

set path=%path%;c:\Program Files (x86)\Embarcadero\RAD Studio\10.0;c:\Program Files (x86)\Embarcadero\RAD Studio\9.0

因此第二个脚本失败,因为第一个脚本的路径出现得更早。

解决这个问题的优雅方法是使用 setlocalendlocal在您的脚本中将它们彼此隔离。

setlocal
set path=%path%;c:\Windows\Microsoft.NET\Framework\v3.5
set path=%path%;c:\Program Files (x86)\Embarcadero\RAD Studio\10.0
.....
endlocal

修复它的 hacky 方法是像这样设置路径:

set path=c:\Program Files (x86)\Embarcadero\RAD Studio\10.0;%path%

请使用优雅的方法!


此外,您应该使用 pushd 和 popd 来隔离每个脚本的目录更改。

如果这不能解决所有问题,请提供更多信息。首先,错误消息非常有用。

关于delphi - MSBuild 和多个 Delphi 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com