由隐含导入的单元引起的EPackageError

Sji*_*ips 5 ide delphi packages package

我目前正在参与Delphi XE5项目,我遇到了一个我无法解决的问题.我有一个Delphi项目组,它包含一个EXE; 这个EXE动态加载多个运行时BPL.这些BPL也是项目组的一部分.但是,当我运行应用程序时,我收到错误'Project {MyProject.exe}引发异常类EPackageError,消息'无法加载包'PumpMethod'.它包含单元'FlEdit',它也包含在'eXtractionUnitMethod'包中.

我已经搜索了SO,我找到了原因.特别是"隐式导入"在Delphi包中总是一件坏事吗?很有帮助.在编译期间,我的项目的BPL都发出以下消息:

[dcc32警告] PumpMethod.dpk(46):W1033单位'FlEdit'隐式导入包'PumpMethod'

另外一个:

[dcc32警告] eXtractionUnitMethod.dpk(46):W1033单位'FlEdit'隐式导入包'eXtractionUnitMethod'

但问题是FlEdit是一个只允许输入浮点数的文本框控件,它已经是已安装软件包的一部分.这个包'Spark190.bpl'包含控件,因此也包含FlEdit单元.我已经注册了它,控件出现在工具面板上.这是带控件的项目:

在此输入图像描述

还有一个项目DclSpark190.bpl,但这是一个设计时包(包含控件的注册).当我关闭这个项目组并创建一个新项目组时,我可以在一个表单上拖放"我的浮动编辑",这样就可以了.

当我现在用EXE打开项目组,并构建BPL时,我收到了以下消息:

在此输入图像描述

这对我来说似乎没问题.Spark包(带有FlEdit)现在包含在'requires'列表中:

在此输入图像描述

但是当我再次编译时,会再次显示"以下更改......".这看起来不正常; Spark BPL已包含在需求清单中?所以:

Q1:为什么会这样?这是Delphi XE5中的错误吗?我这里有什么不对吗?

此外,隐含导入到"PumpMethod"包中的'FlEdit'仍未消失:

在此输入图像描述

所以:

Q2:我想我已经将FlEdit放在一个单独的包'Spark'中.两个BPL都在所需的包列表中包含'Spark',但仍显示警告(W1033).我还可以做些什么?