当前位置:  开发笔记 > Android > 正文

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

如何解决《在项目基础上加载Delphi设计时包》经验,为你挑选了2个好方法。

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

软件包在大型项目中非常有用,可以使构建时间保持可接受,但它们在这些大型项目中也是一个真正的pita.当一个开发人员添加一个新软件包时,它会为所有其他软件包打破,直到他们在他们的机器上安装新软件包.然后是包的版本化......

那么有人为此做出适当的解决方案吗?(多年来一直困扰着我)



1> Otherside..:

在我以前的工作中,我写了一个小工具来帮助我们使用版本化软件包.我真的应该在业余时间重新创建该工具并使其可用.虽然这个工具并不难写,所以也许你可以自己实现类似的东西.

基本上它的工作方式如下:

Subversion repo包含子文件夹中的所有包.repo中的每个包文件夹都有相同的子文件夹:Lib(用于DCU),Source,Help(如果需要)

在repo的根文件夹中,该工具与XML文件一起使用.

XML文件为每个包指定了所有需要的信息:哪个文件夹包含DCU,哪个文件夹包含source,需要为帮助运行哪个命令.

该工具读入XML并显示所有可用包的清单框.已标记已安装的软件包(从BDS注册表中读取).

用户可以选择要安装/卸载的软件包.

该工具在BDS注册表中添加/删除必要的密钥.它将DCU/Lib文件夹添加到IDE的搜索路径中,它将源文件夹添加到IDE浏览路径,并将自定义IDE专家注册帮助命令(此专家提供默认帮助菜单的扩展以启动所有已安装软件包的帮助)

该工具甚至可以检查包之间的冲突和依赖关系.例如,Raize组件的版本3和版本4都可用,它们不能同时处于活动状态.依赖性检查对于从TurboPower AsyncPro派生的内部组件非常有用(许多内部组件依赖于通过AsyncPro进行串行通信)

可能的扩展是能够保存/加载选择的包并将选择存储在每个项目中,这样您就只能加载特定项目所需的包.

当公司从Delphi 5/7迁移到Delphi 2007时,我实现了所有这些.我们以前在包版本化方面遇到了很多问题,并希望通过某种方式来版本化所有不同的包.

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

当必须进行错误修正或发布新版本的第三方软件包时,一个人必须将更改提交给subversion.所有其他开发人员都可以从subversion进行更新并拥有最新版本而没有任何问题.

当新的组件包被添加到环境中时,一个人必须提交所有文件,更改XML包列表,然后其他开发人员可以进行subversion更新并运行该工具以轻松集成包.

所有第三方和自定义内部组件现在都很容易进行版本化.

通过在subversion repo中包含DCU(和其他二进制文件),我们确保所有开发人员使用相同的编译版本.在此之前,不同的编译可能使用不同的设置,导致某些组件的行为不同.

当所有其他开发人员最终安装Delphi 2007时,他们的软件包在不到10分钟的时间内完成设置(大部分时间都是从subversion repo下载所有内容;工具本身可以在不到2秒的时间内安装20个软件包).之前,通过手动安装Delphi5/7的所有软件包,可能需要2天才能完成所有安装.

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



2> Ben Laan..:

这也不容易.您可以使用自定义注册表hack以及您感兴趣的每个配置的特定bds快捷方式来执行此操作:

要使用,只需创建一个新的快捷方式并修改命令行以传递例如-rMyAlternateBDSReg.然后在启动一次后,创建reg条目,他们可以配置他们想要的备用注册表,删除包等,而不必担心搞乱默认安装.

来自codegear

如果为每个项目设置配置,则可以为给定项目启动相应的快捷方式.这不是自动的,但它总是比在那里拥有一切更好.

一个很好的副作用是加载时间会得到改善.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有