0

我负责管理 100 多个 delphi (XE2) 项目的套件,这些项目目前都是在没有包的情况下构建的。一些可执行文件和 DLL 包含一些大型第三方组件集,它们的大小增加了几兆字节。我们的安装程序已经超过 100MB,有几个可执行文件超过 10MB,有几个在 4MB 左右,还有很多在 1 到 2MB 之间。我正在考虑为一些第三方组件和 VCL 使用包。通常,可视组件仅用于可执行文件,而不是 DLL。DLL 必须保持为 DLL,因为有些是从其他语言调用的。

如果我们改用包,有哪些主要考虑因素和需要注意的危险?什么可能打破?是否会影响调试、测试、构建(使用 FinalBuilder)或维护的便利性?因为我们将在运行时加载整个 BPL 而不仅仅是链接器所需的单元,所以运行时内存利用率是否会增加得无法接受?

我知道,唯一真正的答案将来自尝试使用我们的特定应用程序,但我非常感谢任何走这条路或拒绝这条路的人的一些建议。

4

1 回答 1

1

我避免像瘟疫一样的运行时 BPL。以下是原因:

A. 您需要考虑版本控制。当有人更新一个 BPL 或 EXE 而不是其他人时会发生什么。

B. 你需要考虑 DLL 地狱。你的路径是什么,你的应用程序的所有部分都在同一个文件夹中,还是它们会在路径上的目录中?

C. 您需要考虑在运行时丢失一个或多个文件的可能性。这通常会导致应用程序损坏。有些人实际上使用这个效果很好(一些没有为功能 X 付费的客户甚至没有收到那个 BPL)但大多数情况下,这只是另一个麻烦的来源。

D. 万一您需要修复 VCL 源代码中的错误,您真的想将重建 VCL BPL 添加到您的有趣维护编程活动列表中吗?

E. 在我工作过的一个基于 BPL 的大型应用程序中,我发现在一个项目组中打开的主要 EXE 及其所有插件 BPL 子部分导致 Delphi(当时是 XE)的稳定性大大降低(崩溃更多) 比我加载同样大但单可执行的项目时。IDE 问题并非闻所未闻,尤其是在项目组中的多个项目之间发生依赖关系的情况下。

每当提出使用包的想法时,我发现一杯好酒和 8 小时的编程休息时间通常就足够了。

于 2013-09-30T21:27:51.660 回答