Visual Studio项目目录和文件说明
VS6.0以及之前的版本是非常旧了,跟VS2002以及之后的版本有非常大的差别。
VS2002之后,虽然每个版本都有变化。但是思想上已经非常成熟了。
vc5,6的工程文件是.dsp
vc2002-2008工程文件是vcproj
vc2010之后是vcxproj
vcproj和vcxproj都是xml格式的。
VS使用方案管理项目,一个解决方案下可以包含多个项目。
默认情况下,VS解决方案总目录下包含sln和一个项目文件夹,在编译器中生成debug和release解决方案后,总目录下还会生成对应的debug和release目录(存放的是中间编译文件obj)。
下面结合例子讲一下:solution为创建的解决方案,demo为创建的项目
解决方案solution总目录如下:
ipch目录内的文件和.sdf文件是visual studio用来保存预编译的头文件和Intellisense用的,删除这些文件对于工程开发完全没有影响。不能提交svn
.opensdf看名字就差不多知道意思了,好像只有打开工程的时候才会出现,关闭就会消失,估计是sdf的临时文件。不能提交svn
.sln(Visual Studio.Solution)通过为环境提供对项目、项目项和解决方案在磁盘上的位置的引用,可以将他们组织到解决方案中。需要提交svn
.suo(solution user option)解决方案用户选项,记录所有将与解决方案建立关联的选项,存储了用户对界面的自定义配置,包括布局、断点、打开的文件等。不能提交svn
项目demo目录如下:
.vcxproj项目文件
.vcxproj.filters用于项目下文件的虚拟目录,需要提交到svn
.vcxproj.user用户的一些相关配置,不能提交svn
除了这些,在Debug和Release目录下,还有一些文件。
.exe可执行文件
.exp导出库文件的文件,只有dll工程才有,包含了导出函数和数据项信息。链接工具使用这类文件来创建动态链接库。
.def告知编辑器不要以microsoft编译器的方式处理函数名,而以制定的某方式编译导出函数,这样可以避免由于VC++编辑器的独特处理方式引起的链接错误。
.ilk增量编译(incremental linking),取消增量编译可以不生成这种文件,对于大工程来说可能会变慢。
.pdb帮助软件调试的文件
.manifest文件为了解决不同的程序调用相同名称的但是不同版本的dll产生的问题。