如何从BPL确定它是否只是设计时间

时间:2011-05-04 22:51:46

标签: delphi packages delphi-xe

我们将所有包构建到同一输出目录。

该目录包括设计时和运行时包。

查看生成的BPL是否有办法确定包只是设计时间?

我希望能够从我的部署列表中过滤掉这些内容,因为我正在构建运行时包。

过去我已经构建了运行时包的自定义列表。我正在寻找自动化这个过程。

如果有特定于版本的答案,我们正在使用Delphi XE。

2 个答案:

答案 0 :(得分:15)

使用GetPackageInfo并检查pfDesignOnly参数中的Flags。 或者,如果您想跳过不必要的包含单元和所需包的枚举,请查看PackageInfoTable中的SysUtils(不幸的是,隐藏在实现部分中)。

答案 1 :(得分:2)

AFAIK,不是在没有分析BPL的imports的情况下从外部看它是否对仅设计的IDE包有依赖性(例如,DesignIntf)。您可以使用TDumpDependencyWalker执行此操作。如果您想尝试使用应用程序加载包,也可以使用TOndrej的建议。

使用DependencyWalker快速检查我的系统上的一个仅设计软件包,显示:

DependencyWalker image

此问题的常见解决方案(如图中的Virtual Treeview包中所示)是为设计时包添加D后缀;一些组件集(如某些TurboPower组件,IIRC)也为运行时包使用R后缀。