2008-10-14 75 views
11

有没有一种方法可以在项目库中选择designtime包?在项目库中加载Delphi designtime包

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

所以有任何人有适当的解决方案呢? (它现在一直困扰着我多年)

回答

8

在我以前的工作中,我写了一个小工具来帮助我们使用版本控制软件包。我真的应该在业余时间重新创建这个工具并使其可用。该工具虽然不难编写,但也可以自己实现。

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

  • 颠覆回购与子文件夹中的所有包。回购库中的每个包文件夹都具有相同的子文件夹:Lib(用于DCU),源,帮助(如果需要)
  • 在回购站的根文件夹中,将工具与XML文件一起放置。
  • XML文件指定了每个软件包的所有必需信息:哪个文件夹包含DCU,哪个文件夹包含源,需要运行哪个命令才能获得帮助。
  • 该工具读取XML并显示所有可用软件包的清单框。已安装的软件包(从BDS注册表读取)被标记为选中。
  • 用户可以选择安装/卸载哪些软件包。
  • 该工具在BDS注册表中添加/删除必要的密钥。它将DCU/Lib文件夹添加到IDE的搜索路径中,它将源文件夹添加到IDE浏览路径,并将其注册到自定义IDE专家的帮助命令中(该专家提供了默认帮助菜单的扩展以启动帮助所有已安装的软件包)
  • 该工具甚至可以检查软件包之间的冲突和依赖关系。例如Raize Components的第3版和第4版都是可用的,它们不能同时处于活动状态。依赖检查是有用的,从TurboPower公司AsyncPro衍生(很多内部组件的依赖于经由AsyncPro串行通信)在内部部件

一种可能的扩展将是能够保存/加载的选择打包并存储每个项目的选择,以便只能加载特定项目所需的软件包。

我实现这一切的时候,公司从德尔福5/7移动到德尔福2007年,我们有很多的问题,之前包的版本,想一些办法版本的所有不同的包。

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

  • 错误修正时必须做出或第三方软件包的新版本发布,一个人不得不更改提交到颠覆。所有其他的开发者都可以从颠覆中做出更新,并且拥有最新版本,而不会有任何问题。
  • 当新的组件包将被添加到环境中,一个人必须提交所有文件,修改XML软件包列表,然后其他的开发者可以做的颠覆更新和运行包轻松集成的工具。
  • 所有第三方和定制的内部成分现在版本容易。
  • 通过包含的DCU(和其他二进制文件)在颠覆回购,我们保证所有开发者使用相同的编译版本。在可能的情况下,不同的编译使用不同的设置,导致某些组件的行为不同。
  • 当所有其他开发者终于装德尔福2007年,他们的包是在安装不到10分钟(大部分的时间花在下载一切从颠覆回购;工具本身可以在不到2秒钟安装20包)。之前,通过手动安装Delphi5/7的所有软件包,最多可能需要2天才能安装所有软件。

这不仅仅用于一些内部组件,还包括一些大型组件包:Raize组件,JCL/JVCL(使用他们的安装程序代替工具),DevExpress Quantum电网3和4,TurboPower公司AsyncPro

+0

这听起来非常有用!请确保它可用。 。 。 – 2008-10-14 15:58:55

6

这太不容易了。你可以做到这一点,虽然,使用自定义注册表破解的,而且每个配置特定BDS快捷方式,你有兴趣:

使用,只需创建一个新的快捷方式, 修改命令行例如通过 -rMyAlternateBDSReg。然后启动一次,注册条目是 创建,他们可以配置 备用注册表所有他们想要的, 删除包等,没有 担心搞乱默认 安装。

codegear

如果你设置了一个配置为每一个项目,你就可以开始为给定的项目相应的快捷方式。它不是自动的,但它总比那里的一切都好。

一个不错的副作用是加载时间将得到改善。

0

我们把源为我们包中的源代码控制与重建他们一个批处理文件一起。如果包中的树发生更改,那么我们重建它们。这并没有解决安装新软件包的问题,​​但有些注册表点击可以解决这个问题,所以我们可能会包含.reg代码段来处理这个问题。