asp.net用到现在,有几个实在无法忍受的问题:
1.每次更新程序,都会启动一大堆Csc.exe进程来编译新的文件,所有的DLL我都编译过了,为什么要重新编译一次呢?而且在编译完成之前,每一个新的连接都会启动一个新的进程进行编译,这些进程之间又会互相抢占资源,造成堵塞,因此,每次更新程序,都要几分钟的时间才能启动起来。不知道当初设计的时候为什么不让它们等待一个进程编译完成以后大家一起使用?这样只需要十几秒就可以了。而编译完成之后,由于同时编译,可能还会带来另一个问题,就是会提示dll文件找不到,又需要重新完整编译一遍再上传,并清空dll缓存才可以。
据说asp.net 2.0里面已经有完整发布模式编译了,可以在本地进行完整编译,上传以后就可以直接用。有机会尝试一下。
今天发现另一个新问题,编译完成以后内存占用会上升一倍,而且不会降下来。内存的持续升高会带来网站Down掉,或者反应缓慢。又要重启IIS服务才能解决问题。而重启以后,又面临另一次编译......
2.在本地写程序的时候,通过SVN更新了别人上传的文件,如果Web项目有文件变动,比如新增加了aspx文件,或者删除了aspx文件,导致Web项目的project文件发生变化,会提示项目文件变动,是否重新载入。看上去这是个很贴心的功能,但是实际上当你选择了是,重新载入以后,是无法通过编译的,发生的都是奇怪的问题,比如某某函数找不到,通常这是因为这个函数是在另一个被引用的项目的定义的,过去看看,函数明明是在的。
编译的输出信息里面有一句话,被引用的那个Dll无法复制到bin目录,因为文件正在被使用等等。不得不把整个项目关掉重新打开。而联系IIS的这个过程又慢的要死。
据说VS2005把Web应用程序也当作普通的Dll项目来编写和编译了,不再需要IIS的支持了,也不知道是不是真的。
目前项目时间太紧,否则就花上一个星期把项目升级到2.0去了。不知道随着项目越来越大,会不会造成升级的难度的增加。再等个半年,大概3.0就出来了,或许可以直接升级到3.0上面去。