Visual Studio Project管理总结

近一年多工作中都是在windows下用MS的VisualStudio来做c++开发环境,win下c/c++/c#等开发最好用的IDE了,最近要走了,有闲工夫了,顺道总结一下工作中使用VS的小技巧吧,谈不上经验。

  • 大的模块solution区分开

    怎么说呢,最开始的第一个项目server和client都在一个sln里,然后大量使用类似#ifdef SERVER这种,不知道是VS的bug还是怎么的,项目工程时间太长了,也没有专人负责维护,一般都没有的,很多时候切换编译选项,那些本该灰掉的代码也没有灰掉,全都是高亮的,然后大量的代码一个#ifdef下去,几千行之后才#endif一下,很多时候都能难直观简单地这段代码到底是client的还是server的,一般都要仔细看看代码写了啥,反正新接触的人很难,除非是大神短时间内就把整个项目代码框架全摸透了,那确实不需要什么工具来高亮灰化提示的,不过对于一般人很难,所以最好是分开吧,client一个sln,server一个sln,反正VS支持多开的,我觉得至少分三个吧,client.sln,server.sln,engine.sln。

  • build之后一键启动运行

    通常build之后目标文件会生成到项目目录下的Debug或者Release目录,必须手动把exe或者dll复制到运行目录下,当然你可以写一个bat脚本来做这个事情,但是除非这个脚本写得“目录无关性”,否则另外一个新人来了,他checkout代码然后找你要了神奇的bat也要改改才能适应自己的目录,而且其实我觉得出于一个项目管理方便整洁的角度来说,所有项目内的程序员的项目目录应该是一致的才比较好,所以实际上我觉得最好的做法是利用VS提供的post build event功能,翻译过来大概是叫生成后事件之类的吧,因为VS提供了一些宏来定义目录的位置,比如$(ProjectDir),它是会根据你的.proj文件的目录路径变化的,也就是说这么设置了之后,任何人只要checkout了source code+.proj(maybe add a .sln,if you like)文件,直接build就会生成一个一模一样的工程目录,包括把生成好的目标文件复制到了指定的目录比如$(ProjectDir)bin,我测试了一下这个方法确实可以做到,而且我感觉方便了很多,:),然后再补个比如run.bat之类的,然后既然项目目录大家都是一样的,这个run.bat就比较好写了,只用相对目录就好了,或者如果有时间有精力可以写个给各个项目通用的启动器程序,这样起单服什么的会简单省事很多,新人上手难度也少很多。

  • Visual Assist必装

    这个没啥可说的吧,用VS的都知道,我的习惯是把常用的VA命令的快捷键都记住了,这样查起代码了,简直是飞一般的赶脚~

暂时这么多吧,想到随时更新。