gpt4 book ai didi

delphi - 在项目基础上加载 Delphi 设计时包

转载 作者:行者123 更新时间:2023-12-03 14:40:07 25 4
gpt4 key购买 nike

有没有办法在项目基础上选择设计时包?

包在大型项目中非常有用,可以使构建时间保持在可接受的范围内,但它们在这些大型项目中也是一个真正的皮塔饼。当一个开发人员添加一个新包时,它会中断为所有其他开发人员构建的过程,直到他们在自己的计算机上安装新包为止。然后是软件包的版本控制......

那么有人对此有合适的解决方案吗? (这已经困扰我很多年了)

最佳答案

在我之前的工作中,我编写了一个小工具来帮助我们对包进行版本控制。我真的应该在业余时间重新创建该工具并使其可用。不过这个工具并不难编写,所以也许您可以自己实现类似的东西。

基本上它的工作原理是这样的:

  • Subversion 存储库,其中包含子文件夹中的所有包。存储库中的每个包文件夹都有相同的子文件夹:Lib(用于 DCU)、Source、Help(如果需要)
  • 该工具和 XML 文件位于存储库的根文件夹中。
  • XML 文件指定了每个包所需的所有信息:哪个文件夹包含 DCU、哪个文件夹包含源代码、需要运行哪个命令才能获得帮助。
  • 该工具读取 XML 并显示所有可用包的 list 框。已安装的软件包(从 BDS 注册表读取)被标记为已选中。
  • 用户可以选择要安装/卸载的软件包。
  • 该工具在 BDS 注册表中添加/删除必要的 key 。它将 DCU/Lib 文件夹添加到 IDE 的搜索路径中,将源文件夹添加到 IDE 浏览路径中,并向自定义 IDE 专家注册帮助命令(该专家提供了默认帮助菜单的扩展以启动所有已安装软件包的帮助)
  • 该工具甚至可以检查包之间的冲突和依赖关系。例如,Raize Components 的版本 3 和版本 4 都可用,但不能同时激活。依赖性检查对于从 TurboPower AsyncPro 派生的内部组件非常有用(许多内部组件依赖于通过 AsyncPro 进行串行通信)

一个可能的扩展是能够保存/加载包的选择,并将该选择与每个项目一起存储,这样您就可以只加载特定项目所需的包。

当公司从 Delphi 5/7 迁移到 Delphi 2007 时,我实现了这一切。之前我们在包版本控制方面遇到了很多问题,并且希望有某种方法来对所有不同的包进行版本控制。

这种方法提供了一些很好的优点:

  • 当必须修复错误或发布第三方软件包的新版本时,必须有人将更改提交给 subversion。所有其他开发人员只需从 subversion 进行更新即可获得最新版本,没有任何问题。
  • 当新的组件包添加到环境中时,一个人必须提交所有文件,更改 XML 包列表,然后其他开发人员可以进行颠覆更新并运行该工具以轻松集成该包。<
  • 所有第三方和自定义内部组件现在都可以轻松进行版本控制。
  • 通过将 DCU(和其他二进制文件)包含在 subversion 存储库中,我们确保所有开发人员都使用相同的编译版本。在此之前,不同的编译可能使用不同的设置,从而导致某些组件的行为不同。
  • 当所有其他开发人员最终安装 Delphi 2007 时,他们的软件包在不到 10 分钟内就完成了安装(大部分时间都花在从 subversion 存储库下载所有内容;该工具本身可以在不到 2 秒的时间内安装 20 个软件包)。以前,手动安装 Delphi5/7 的所有软件包可能需要长达 2 天的时间才能安装完所有内容。

这不仅仅用于一些内部组件,该存储库还包括一些大型组件包:Raize Components、JCL/JVCL(尽管使用他们的安装程序而不是工具)、DevExpress Quantum Grid 3 和4、TurboPower AsyncPro

关于delphi - 在项目基础上加载 Delphi 设计时包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/200358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com