none
如何提高安装速度 RRS feed

  • 问题

  • 我的程序打包是要用到“系统必备”的“.net framework3.5”,当我打包后,要安装到其它机器上时,我发现补充.net framework3.5的安装速度极慢,尤其是早期的奔3机器,要用30多分钟,新款的机器还要几分钟。有没有什么办法让程序提高安装“系统必备”程序的速度呢。我是否可以将自己程序所需要的动态链引入,并将其属性的“复制到本地”设为"true",就可以不选择安装系统必备的程序呢?
    2010年5月24日 3:54

答案

  • .NET框架在安装时不但复制相应文件、注册组件等,还会用ngen工具编译生成某些重要组件的本地代码。所以安装时间才会比较长。

    直接复制引用的程序集在没有安装.NET的机器上应该也是没有效果的。

    您可以试试.NET Framework 3.5 Client Profile,相对于完整版框架来说,安装速度和体积都要好一些


    共同努力,共同提高
    kaedei#live.cn My BLOG
    2010年5月24日 4:16

全部回复

  • .NET框架在安装时不但复制相应文件、注册组件等,还会用ngen工具编译生成某些重要组件的本地代码。所以安装时间才会比较长。

    直接复制引用的程序集在没有安装.NET的机器上应该也是没有效果的。

    您可以试试.NET Framework 3.5 Client Profile,相对于完整版框架来说,安装速度和体积都要好一些


    共同努力,共同提高
    kaedei#live.cn My BLOG
    2010年5月24日 4:16
  • 你好!

         请教一下Kaedei版主啊!

         请问安装.NET Framework时候“用ngen工具编译生成某些重要组件的本地代码”,这个步骤有文档中的详细说明吗?我印象中是没有这个行为的啊!


    周雪峰
    2010年5月24日 5:49
    版主
  • 你好!

         请教一下Kaedei版主啊!

         请问安装.NET Framework时候“用ngen工具编译生成某些重要组件的本地代码”,这个步骤有文档中的详细说明吗?我印象中是没有这个行为的啊!


    周雪峰
    您好。
    我是在一本讲解VB.NET书上看到的。上面说.NET框架安装程序会使用ngen工具预编译一些重要的程序集,比如mscorlib.dll。
    这样做可能是为了提高框架的性能吧,因为本机代码要比IL代码效率高一些

    共同努力,共同提高
    kaedei#live.cn My BLOG
    2010年5月24日 5:58
  • 你好!

         对这个说法我持怀疑态度,mscorlib.dll加载的时候是以中立域的方式加载的,这样可以被所有应用程序域公用,以达到节省资源的目的!

         ngen是一个把托管程序集转换为本机代码的工具,微软在文档中曾提示,这样会丧失很多JIT编译所做的优化,很可能会降低程序性能!

         实际上这个说法我是头一次听说,所以请教一下你啊!我不是很认可这个说法!


    周雪峰
    2010年5月24日 6:14
    版主
  • ngen会将机器代码文件安装到本机映像缓存中的,而且本机代码通常会有比较快的启动速度。

    还有一个现象就是,在安装.NET框架的过程中,一段时间内ngen.exe进程会占用大量的CPU。

     

    我不太了解ngen,于是搜索了一下,发现有篇文章是在讨论ngen的优势劣势

    http://blogs.msdn.com/junfeng/archive/2004/03/27/97304.aspx

     


    共同努力,共同提高
    kaedei#live.cn My BLOG
    2010年5月24日 6:42
  • 谢谢你的资料啊!的确有这样的行为!太感谢了!
    周雪峰
    2010年5月24日 7:00
    版主
  • 谢谢你的资料啊!的确有这样的行为!太感谢了!
    周雪峰
    不客气呀,我也学到了不少知识~

    共同努力,共同提高
    kaedei#live.cn My BLOG
    2010年5月24日 7:03
  • 我下载了.net framework3.5 client profile, 但是我怎么做才能把它放到系统必备的选项中呢? 直接打开系统必备找不到client profile. 要怎么做才可以将它和应用程序一起打包呢?请大家指教。

    2010年5月28日 8:09