【问题标题】:When to compile apps that use a changed runtime package何时编译使用更改的运行时包的应用程序
【发布时间】:2013-07-27 06:24:09
【问题描述】:

我正在使用 Delphi XE2。我有一个大型项目,它有一个使用运行时包的应用程序 (EXE)、一个 Core.bpl 自定义包(由 EXE 使用)和几个其他自定义 Plugin.bpl 包也使用 Core.bpl 包(作为运行时包)。

我注意到我可以对Core.bpl 进行细微更改,而无需重新编译EXE 或自定义Plugin.bpl 包。但是更重要的更改(添加大量代码或从现有方法中删除大量代码,或添加新方法)会导致问题。有时会出现不一致的访问冲突,有时会出现Core.bpl包中缺少入口点等错误。

我想尽量减少编译的文件数量,以便我们的用户每次发布时要更新的文件更少。但是,我不希望他们看到我有时会看到的错误。

我是否应该在每次更改时重新编译使用 Core.bpl 的所有模块和 EXE,或者是否有一些一般规则要遵循,以便仅针对 Core.bpl 的某些类型的更改编译所有内容?

【问题讨论】:

  • 如果你改变了接口,那么你必须重新编译所有的依赖部分
  • @SirRufo 让它成为答案..
  • @SirRufo - 也就是说,如果您添加、更改或删除方法或属性,那么您必须重新编译所有内容,但如果您只是更改现有方法的代码而不更改其参数,那么什么都不需要重新编译?
  • 感谢@bummi 提供更多信息。
  • 修改私有成员也会改变界面。基本上,在implementation 行之上所做的任何更改都需要重新构建所有相关代码。

标签: delphi runtime-packages


【解决方案1】:

每次更改 BPL 中单元的 interface section 时,都必须重新编译相关部分(EXE 或其他 BPL)。

【讨论】:

  • 也就是说,implementation 行以上的任何内容。
  • @JamesL。 interface 部分从单词 interface 开始,并在单词 implementation 之前结束
  • 是的 - 我意识到这一点。当我第一次在上面的评论中看到interface 这个词时,我以为你在谈论编程意义上的接口。但后来意识到你的意思是因为它与德尔福单元有关。
猜你喜欢
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2015-09-06
  • 2012-09-16
  • 2018-11-14
相关资源
最近更新 更多