一般的VS项目目录结构为:
- 解决方案(solution)名字
- xx.sln 配置文件
- 工程名字1
- xx.vcxproj 配置文件
- xx.vcxproj.user 配置文件
- xx.vcxproj.filters 配置文件
- 工程名字2
- xx.vcxproj 配置文件
- xx.vcxproj.user 配置文件
- xx.vcxproj.filters 配置文件
- …
- 工程名字1
- xx.sln 配置文件
在visual studio2017中,同一个解决方案(solution)下面有多个工程项目(project)。所以,.sln配置文件的作用范围是整个解决方案。.vcxproj配置文件、.vcxproj.user配置文件和.vcxproj.filters配置文件的作用范围是其所在的工程项目中。vcxproj配置文件保存了整个项目的配置信息。对vcxproj字面上的理解是,vc表示visual studio,proj表示project,x表示2010年之后的vc版本。2010之前的版本用vcproj表示。知道了它们的作用范围之后,现在就可以很清楚地知道,如果我们的项目中只有一个工程,那么我们可以不需要sln文件,在windows上面双击vcxproj文件就可以打开。
-
xx.vcxproj.user 配置文件配置文件表示用户在使用VC的时候根据个人操作习惯所保存的配置信息,比如用户点击“显示所有文件”的按钮,对应的配置会保存在这个文件中。目的是保存用户对VC的操作习惯。
-
.vcxproj.filters:当建立一个虚拟目录的时候,配置的值保存在这里。如果你的VS是英文版的,就会发现建立一个虚拟目录叫“Add Filter”。
一般情况下,如果我们要把源码共享到github中,只需要提交工程相关的配置文件,不提交用户个人偏好相关的配置文件。所谓的个人偏好相关,是指根据用户个人的VS使用习惯而保存的配置信息,比如选择了查看所有文件选项,打开了某一个文件。而工程相关的配置是指工程建立相关的信息,不受用户偏好的影响,比如解决方案的名字是什么,这个解决方案下面有哪些project。所以,我们只需要上传sln配置文件、vcxproj和vcxproj.filters配置文件就可以了,当然还包括源码。
另外几个常见的文件:
- ipch目录内的文件和.sdf文件是visual studio用来保存预编译的头文件和Intellisense用的,删除这些文件对于工程开发完全没有影响。
- .opensdf看名字就差不多知道意思了,好像只有打开工程的时候才会出现,关闭就会消失,估计是sdf的临时文件。
- .suo(solution user option)解决方案用户选项,记录所有将与解决方案建立关联的选项,存储了用户对界面的自定义配置,包括布局、断点、打开的文件等。以便下一次你打开Visual Studio可以恢复这些设置,一般为隐藏文件;不提交到github.
在Debug和Release目录下,还有一些文件。
-
.exe可执行文件
-
.exp导出库文件的文件,只有dll工程才有,包含了导出函数和数据项信息。链接工具使用这类文件来创建动态链接库。
-
.def告知编辑器不要以microsoft编译器的方式处理函数名,而以制定的某方式编译导出函数,这样可以避免由于VC++编辑器的独特处理方式引起的链接错误。
-
.ilk增量编译(incremental linking),取消增量编译可以不生成这种文件,对于大工程来说可能会变慢。
-
.pdb帮助软件调试的文件
-
.manifest文件为了解决不同的程序调用相同名称的但是不同版本的dll产生的问题。
参考了:
https://blog.csdn.net/u012175089/article/details/55050617
https://blog.csdn.net/xu_fengyu/article/details/81841877
结束!谢谢