随笔 - 51  文章 - 0 评论 - 210 trackbacks - 6
<2007年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

严正声明 : 本站文章转载请注明出处.

与我联系

搜索

 

留言簿(11)

我的标签

随笔分类

随笔档案

Atlas相关

积分与排名

  • 积分 - 58801
  • 排名 - 800

阅读排行榜

这篇文章主要讨论在团队开发时使用VS2005/2008时建立解决方案时的一些经验和问题.

随着项目的增大,项目内的工程数量和文件数量也在不断增加, 每次编译将会花费更多的时间,如何减少编译时间提高开发效率呢?

我们知道,VS的引用通常有几方式,GAC,项目引用,程序集引用, Web引用等. 我们的各个工程可以引用另外一个工程,这样,在解决生成时VS会自动根据项目的依赖关系自动决定生成时的顺序.在单独生成某个工程时也会自动地同时生成它所依赖的相关工程,这确实会给我们带来一些方便,但正如前面所说的,一旦项比较多的时候,这个编译花费的时间可能较长.

为了解决这个问题,我总结一些经验,即工程之前的引用可以不直接引用工程而是采用引用程序集的方式. 在沙加的神舟本上做实验, 先在解决方案目录下新建一个Lib 目录, 打开工程的属性页,将"输出路径" 指向lib目录,编译当前工程,其它需要引用此工程的项目添加对lib目录里面生成的dll引用. 这样一来每一个开发人员只需要建立自己的解决方案添加自己所负责的那部分工程即可. 编译的速度也会加快. 但是依赖工程有改动时记得要重新编译才会生效, 相关的依赖项目不会被自动编译. 其它的第三方程序集也可以放在这个目录下,如果有更新直接替换重新编译就可以了. 如果同一台服务器上布署的多个程序需要引用同一程序集,比如EnterpriseLib, 可以把它加入到GAC里面去,这样可以提高效率而不必为每一个程序保留一下单独的拷贝.

另外顺便说说, 把不同的类分开到不同的程序集可能会有几个原因:

1. 升级的时候只需要升级相关的组件就可以了.
2. 可以利用反射动态加载不同的组件程序集使程序的灵活性更高.
3. 有利于程序集的复用.
4. 使用不同开发语言开发的程序集可以互相引用.

如果项目不大完全可以放在一个程序集里面不要为了分层而分层,  比如BlogEngine就只有一个工程;)

合理地分开可以让程序不加载不必要的程序,但不宜分得过多,微软也提示尽量将几个小程序集合并为大的程序集,程序集的加载也是需要时间的.

另外,VS2005和VS2008可以共享项目文件,只需要分别建立两个版本的解决方案就可以了,但是要注意编码的风格应按照2.0的标准. 比如不能使用自动属性,虽然它在VS2008建立的2.0工程下也可以工作得很好(那是因为它使用了高版本的编译器).

posted on 2007-12-26 11:17 沙加 阅读(374) 评论(4)  编辑 收藏 网摘 所属分类: .Net开发技巧系列

FeedBack:
#1楼  2007-12-26 13:00 没剑      
合理地分开可以让程序不加载不必要的程序,但不宜分得过多,微软也提示尽量将几个小程序集合并为大的程序集,程序集的加载也是需要时间的.
---
这里也想提个问题:一个程序集(dll)的大小有没有必要控制?
我见过一个同事写的一个项目只有一个dll,大小是2M多,这样子对程序的运行有多大影响?
  回复  引用  查看    
#2楼 [楼主] 2007-12-26 13:15 沙加      
@没剑
应该没啥问题吧. .net框架下面超个这个大小的程序集也不少,只要你自己觉得方便就行.
  回复  引用  查看    
#3楼  2007-12-26 16:54 戏水      
经验分享 功德无量啊
  回复  引用  查看    
#4楼  2008-05-26 10:02 scotoma      
这个是很不错的分享....谢谢

  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-26 11:26 编辑过
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接: