从未构建的软件包[xxx]必须重新编译 / 共享冲突[Delphi文档问题]

4
我刚刚升级到Delphi XE7。现在,在XE中完美编译的软件包不再能够编译。
我有一个需要关闭隐式构建的A软件包,依赖于B软件包。首先,我编译并安装了A软件包。然后,我尝试编译B软件包,但编译器报错:
[dcc32 Fatal Error] A.dpk(39): E2225 Never-build package 'A' must be recompiled. [dcc32 Fatal Error] B.dpk(34): E2202 Required package 'A' not found.
显然,编译器找到了A软件包,因为它知道其内容(知道隐式构建已关闭)。同时,我已经将A软件包的路径添加到“库路径”中。
如果我从A软件包中删除ImplicitBuild指令,编译器只会说:
'Required package 'A' not found.' Process Monitor显示了一个有趣的条目:

C:\Users\trei\Documents\Embarcadero\Studio\15.0\Imports\A.dcp <-- 路径未找到

C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl\A.bpl <-- 共享冲突

'C:\Users\trei\Documents\Embarcadero\Studio\' 中没有 '15.0' 文件夹。

  1. 为什么找不到 A.dpk 文件?
  2. 为什么 Delphi 还想重新编译 A 包?
  3. 为什么 Delphi 在“Imports”文件夹中搜索 DCP 文件?DCP 存储在 'c:\Users\Public\Documents\Embarcadero\Studio\15.0\Dcp\A.dcp'

有趣的事实:
与此消息相关的一个错误(错误号#109584)已经在XE4中标记为已修复。 http://qc.embarcadero.com/wc/qcmain.aspx?d=109584
回归?


你可以使用Sysinternals进程监视器来验证Delphi正在尝试访问哪些文件或包吗? - Sebastian Z
@SebastianZ-你好。我更新了我的帖子。感谢你的想法! - Gabriel
1
请检查您的“path”环境变量,看看是否包含您的*.bpl/*.dcp包的路径。RapidEE是一个非常好用的工具。 - Sebastian Z
不,它不包括BPL/DCP文件夹。但这是一个全新的Delphi安装。我在那里没有改变任何东西(除了将自己的路径添加到“库路径”中)。这可能与这个错误有关吗?https://dev59.com/WYbca4cB1Zd3GeqPaMUE - Gabriel
但是为什么PATH环境变量应该包括DCP/BPL文件夹????在“Delphi选项->库->DCP输出目录”和“包输出目录”中有专门的字段用于这两个文件夹。在我的情况下,它们分别设置为“$(BDSCOMMONDIR)\Dcp”和“$(BDSCOMMONDIR)\Bpl”。 - Gabriel
+1 给 RapidEE。那是一个很棒的工具。 - Gabriel
1个回答

5
PATH 环境变量必须包含 bpl 文件夹。通常安装程序会自动添加此文件夹。如果没有,Delphi 将无法找到 bpls,因为它们是作为 dll 加载的。但是,路径变量有限制,所以这可以解释为什么在全新的 Delphi 安装中出现缺失。
在最新版本的 Delphi 中,您可以转到 工具 -> 选项 -> 环境变量 并添加 path 用户覆盖,而不是修改环境变量路径: C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl;C:\Program Files (x86)\Embarcadero\Studio\15.0\bin;C:\Program Files (x86)\Embarcadero\Studio\15.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl\Win64;C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE3\win32_togo;C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE3\win64_togo;$(PATH)
末尾的 $(PATH) 用作全局 PATH 环境变量的占位符。
这样做可以减小 PATH 环境变量的大小,特别是如果您安装了多个版本的 Delphi。

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