Delphi之所以这么快速,是因为能使用的第三方控件非常多,但当大量使用第三方控件后,产生的问题也是非常多了。比如,我们做动态库开发的时候,为了将编译的动态库(DLL)变小,我们一般编译的时候,都选择带包编译,到时候,将控件依赖的BPL文件包一起拷贝到客户电脑中去就行了,随着控件越来越多,包文件也就越来越多。。一个小小的程序,本身只有一点大的,为了能正常运行,要把所有的包都拷贝过去,造成我们的程序整体非常庞大,我们一直为这个事情感到困扰。。因为开发人员永远希望自己的程序能尽量的小。
       后来,我发现 Project-Options-packages 如果勾上Build With Runtime packages  这里,在这里,Delphi默认是把所有支持的包都加载上了,比如不需要的如 FastReport 的文件包(fs7;frx7;frxcs7;fsDB7;frxDB7;fsBDE7;)都在里面,通常情况下,把这里面把不需要的包去掉,重新编译后,就能解决前面说的问题。。但后面的问题又出来了,我们公司是团队开发,正常情况下,很少有人去关心每个人去用什么控件开发,每个人的的产品所依赖的BPL包,这样,光靠人来管理过滤这些BPL,在实际的开发当中,是不现实的。。然后我又继续研究,我发现,Delphi在编译后,在Project-Information for (工程) 里面,有本工程的所使用的BPL文件包。。如你新建一个项目,甚至里面所用的包(Rtl70.bpl,VCL70.BPL,VCLX70.BPL),也就说,Delphi在编译后,就已经知道依赖的包。。但问题这样,我们还是不好去发布,一个系统编译可能有几十个包,我们打包的人,不可能一个个进行核对。。就算一个个核对,也很有可能出错。导致在客户的机器上由于缺少BPL文件包,所以,我们又不得不把没用的几百个包全部都打包到一起去发布!!
      希望在Delphi编译前就能把所有需要的BPL包,能让开发能快速的找到、过滤依赖的包,把不需要的包全部剔除!谢谢!希望高手能提高宝贵的建议,小弟将不甚感激!!