各位老大,我做了个管理系统,创建了60多个form,另外引用了一些控件,最后编制成EXE,文件有15M,有没有办法减小文件,加快启动速度?或者能否象PB一样,做成多个PBD,这样可以减轻开始时的启动速度。

解决方案 »

  1.   

    60个FORM?那一定是比较烂的开发方式。
    60个FORM几乎可以做一个大型的软件了。不仅仅是要使用面对对象开发方式那么简单,
    更深层次的原因是没有好的架构,其实许多
    界面是通过配置就可以复用的。
      

  2.   

    晕,我的软件有100个Form也只有10MB大小呀
      

  3.   

    把一些FORM做成DLL,运行过程中需要时才加载。
      

  4.   

    分写成几层,尽量把重复的代码写到程序的基类里,主项目只要放软件必备的几个form就行了,其他可以规划到应用层
      

  5.   

    可视化继承、分层、公用资源文件  简单扼要,说的好!!!楼主觉得太抽象??其实说简单点是把很多个form中都用到的东西(一般你60多个里总有长的像的窗体)把这些Form按相似分出几组来,长的像的放一组,寻找它们的相似点,把这些相似点作成一个form并编译成dll,其他窗体直接继承这个可以十分明显地减少代码(也就减少了体积)。
    你也可以在一个解决方案里用多个项目,那样只有启动项目编译成exe,其他是dll,或者换句话说把一个文件分成了多个,这样也可以减少代码重复。另外代码中注意重复的东西尽量提出来重用,不要复制好几次,如果是相似的东西,也考虑可以不要写2次。
    每个form有自己的资源(如图标,图案等),虽然可能60个的资源中都有大部分一样的,不过每个都保留了60份可是不小的开销。
    另外,类名、方法名,变量名,等等,如果都很长的话也会加大体积,VS.net自带的dotfucator工具可以把你所有类、名称空间,方法,变量全部改成一个字母(当然是在生成的exe和dll中改,并不影响你自己的代码文件可读性)体积也可以大大压缩(WinForm这点比ASP.NET要好的多也明显的多).
      

  6.   

    另外楼主提到启动太慢,注意.net里有个工具是用来生成本地映像的,生成以后只要没改到程序,开始运行的时候会直接读编译好的本地映像,并不重新编译,速度可以非常明显提升。
      

  7.   

    syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*) 讲得很好!
    还有一个设置:
    项目属性 >> 配置属性 >> 代化 >> 启用优化 = 指示编译器优化输出,使其变得更小、更快或者更有效。
      

  8.   

    把每个Form单独编译成一个 .netmodule, 然后再把所有的 .netmodule链接起来做成一个程序,这样可以保证主程序很小而且只有当需要Form时才从.netmodule中装载
      

  9.   

    我的900K ,5个form ,60个user control
      

  10.   

    13M的程序多半是图片资源太多,否则如果全部是代码写 13M 要写死人的,要知道MS 的System包也才 1M多点
      

  11.   

    项目属性 >> 配置属性 >> 代化 >> 启用优化 = 指示编译器优化输出,使其变得更小、更快或者更有效。good idea
      

  12.   

    搞C#就搞ASP.NET
    几百个form都正常
      

  13.   

    一般不用太多的Form 在一个工程文件.
    但这与启动无关.
    关键是你启动的时候做了些什么?
      

  14.   

    同意把重复代码写成类...或DLL
      

  15.   

    谢谢各位,数据维护方面我尽量减少了代码,增加了公共的模块,二百多个报表我现在只用一个FORM来做,总体上还是可以的。