【问题标题】:How does MSBuild find the Delphi search path?MSBuild 如何找到 Delphi 搜索路径?
【发布时间】:2010-12-21 17:21:19
【问题描述】:

如果我启动 RAD Studio 命令提示符并运行

msbuild /t:Rebuild

在项目目录中,msbuild 将显示调用 dcc32 的完整命令行,包括所有路径设置。

MSBuild 根据 IDE 设置(存储在注册表中)和项目文件(包含 $(DCC_UnitSearchPath) 等占位符)使用哪种魔法来查找搜索路径?

RAD Studio 命令提示符仅为 MSBuild 设置 .Net 环境。那么幕后还有其他事情在起作用吗?

【问题讨论】:

    标签: delphi msbuild


    【解决方案1】:

    您是否了解了项目的内容?您应该能够预测计算它的位置(即哪个任务)并使用反射器对其进行逆向工程。请记住,MSBuild 只是 [非常古怪的] 文本。

    或者您可以打开详细日志记录并发现哪个任务以这种方式计算它。

    或者您可以使用 procmon 来监视正在探测的 regkey 等。

    或者你可以等巴里出现并给出明确的答案:P

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 抱歉我找不到EnvOptions.proj(或目录),它被引用为$(APPDATA)\CodeGear\$(BDSAppDataBaseDir)\6.0\EnvOptions.proj
      • 如果您使用的是 XP,请查看 C:\Documents and Settings\\Application Data\CodeGear\BDS\6.0,或者 C:\Users\\AppData\ Roaming\CodeGear\BDS\6.0(如果您使用的是 Vista 或 Windows 7)。
      • 谢谢!我的第一次搜索不包括隐藏文件夹:P
      • +mjn 在%AppData%\Embarcadero\BDS\8.0\EnvOptions.proj。感谢 Jon,+1,因为这帮助我解决了让 Delphi XE 项目使用 Continua CI (it could not find rtl.dcp or System.dcu/System.pas) 进行编译的问题。
      • 有没有办法告诉 msbuild 使用不同的注册表而不是 BDS。我需要 msbuild 使用不同的库路径,但需要在 IDE 或注册表上手动更改它。
      猜你喜欢
      • 2017-07-11
      • 2013-05-27
      • 1970-01-01
      • 2011-10-22
      • 2011-06-12
      • 2017-01-11
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      相关资源
      最近更新 更多