MSBuild如何找到Delphi搜索路径?

10
如果我启动RAD Studio命令提示符并运行
msbuild /t:Rebuild

在项目目录中,msbuild 会显示完整的命令行来调用 dcc32,包括所有路径设置。
MSBuild 使用什么魔法,基于 IDE 设置(存储在注册表中)和项目文件(包含像 $(DCC_UnitSearchPath) 这样的占位符),来查找搜索路径?
RAD Studio 命令提示符仅为 MSBuild 设置 .Net 环境。因此,在幕后有其他东西在起作用吗?
2个回答

18
如果您检查项目文件,您会注意到其中包括CodeGear.Delphi.Targets,它包括CodeGear.Common.Targets,后者又包括EnvOptions.proj。EnvOptions.proj由IDE更新以包含来自注册表的路径。

抱歉,我找不到 EnvOptions.proj(或目录),它被引用为 $(APPDATA)\CodeGear$(BDSAppDataBaseDir)\6.0\EnvOptions.proj。 - mjn
5
如果您的操作系统是Windows XP,请查看C:\Documents and Settings<用户名>\Application Data\CodeGear\BDS\6.0,如果您的操作系统是Vista或Windows 7,请查看C:\Users<用户名>\AppData\Roaming\CodeGear\BDS\6.0。请注意不要更改原始意思。 - Jon Benedicto
谢谢!我的第一次搜索没有包括隐藏文件夹 :P - mjn
1
它位于%AppData%\Embarcadero\BDS\8.0\EnvOptions.proj。感谢Jon,点赞+1,因为这帮助我解决了使用Continua CI编译Delphi XE项目时出现的问题(找不到rtl.dcp或System.dcu/System.pas)。 - Jeroen Wiert Pluimers
有没有办法告诉msbuild使用不同的注册表而不是BDS。我需要msbuild使用不同的库路径,但不想手动更改IDE或注册表。 - Bruno Santos

1

你走过项目的内部结构了吗?你应该能够猜测计算的位置(即,哪个任务)并使用反编译工具Reflector。记住,MSBuild只是[非常古怪的]文本。

或者你可以打开详细日志并发现哪个任务通过这种方式进行计算。

或者你可以使用procmon来监视正在被探测的regkeys等。

或者你可以等待Barry来给出明确的答案:P


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接