VS2010 文件类型介绍+Git托管说明

概述:

解决方案(Solution):一个大型项目的整体的工作环境; 
工程 (Project):一个解决方案下的一个子工程;

在VS中,一个Solution可以有一个或多个Project。在我们创建一个工程时,如果没有指定Solution,VS会帮我们创建一个与工程名相同的Solution,这时一个Solution里只有一个Project。所有在我们的Project的文件目录结构中,Project文件夹下还有一个Project文件夹,第一个就是整个Solution的目录,第二个才是Project的目录。

VS2010  新建项目后会产生文件sln、suo、sdf、ipch等,项目工程文件夹下包括vcxproj、vcxproj.user、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件(对于其他工程类型的还有dllmain.cpp、def、props/vsprops文件等)。

此外各个工程编译、链接、生成过程中的各种中间文件、调试文件、最终文件等,比较常见的pdb、ilk、obj、log、pch、exe、lib、dll、exp、manifest,而某些中间文件可以不用理会。
 

解决方案相关的文件:

Project.sln: 
整个解决方案(Solution)的配制文件,组织多个工程和相关的元素到一个解决方案中。用鼠标双击它就能用VS打开整个工程项目。主要包括工程项目组织结构、位置、工程编译环境配置等信息。

官网介绍链接:https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/bb165922%28v%3dvs.90%29

Project.sdf: 

解决方案工程信息数据库文件,此文件同ncb文件,都比较大,也可以删除,重新打开解决方案后会自动创建,主要提供提供的智能感知、代码恢复等信息;用于浏览相关的数据库文件,它支持浏览和导航的特性。如跳转到方法、变量的声明,查找所有对象的所有被引用的地方,类视图等等。

Project.suo: 
(solution user opertion) 储存了用户界面的自定义配置,包括布局、断点和项目最后编译的而又没有关掉的文件等,以便下一次你打开Visual Studio可以恢复这些设置,一般为隐藏文件。

官网介绍链接:https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/bb165909%28v%3dvs.90%29

Project.opensdf: 
打开解决方案(Solution)时的临时文件,这个文件只有你的解决方案在VS打开的状态才会有,工程一关闭文件就被删除了。

工程相关的文件

Project.vcxproj: 

项目工程文件,里面包含的该工程的工具集、工程编译、链接、调试等相关的配置。

*.vcproj:VS2008以及VS2008之前版本的VS工程文件

*.vcxproj:VS2010以及VS2010之后版本的VS工程文件

不同VS IDE的项目转化,可以通过修改此文件实现,低版本转高版本IDE,则直接打开即可,而高版本转到低版本需要修改工程文件,另外版本间转化可能会出现某些API使用等限制,可能需要修改、替换;vcproj与vcxproj内容、结构还是有所差异,转化时需要修改的地方比较多,如果修改的地方比较多,可以重新建立工程将相应文件添加进去,修改工程属性也可。

Project.vcxproj.filters: 
文件过滤器,解决方案视图下文件的组织和编排都是定义在这个文件中的。如果由于某种特殊的原因(如系统或VS突然崩溃)导致你打开工程时文件的组织结构是乱的,100%就是这个文件的原因。

Project.vcxproj.user: 

不同用户有不同的本地用户配置,主要是一些窗体布局、位置等,与项目具体内容一般无关,可删除。

其他文件

以下文件主要针对Visual C++ Projects

ncb:(no compile browser)VC++自动创建的信息跟踪文件可以删除重新打开解决方案后会自动再次创建,此文件一般比较大;

ipch:主要保存预编译的头文件和智能提示信息用的,也可以删除,重新打开解决方案后会自动创建;

VC.db:SQLite3格式的文件,里面应是项目相关的文件信息,同ncb、sdf文件,一般比较大可删除,重新打开解决方案后会自动创建;

VC.VC.opendb:此文件在项目打开的时候创建,关闭的时候自动删除,目前作用未知;

ReadMe.txt:里面主要是一些工程创建时向导产生的各个文件描述信息;

targetver.h:主要定义程序运行的环境,如限制程序、定制版本,如WINVER、_WIN32_WINNT、_WIN32_WINDOWS、_WIN32_IE等宏定义,此外有的版本还包括SDKDDKVer.h或WinSDKVer.h平台版本控制;

stdafx.h:包含targetver.h,可定义或声明一些公用函数、宏、结构、需要的头文件等信息,因各个cpp一般会包含引用stdafx.h,故以此实现控制各个cpp文件中可能用到的宏控制等以及预编译;

stdafx.cpp:很少做其他的用途,一般只是#include "stdafx.h",已生成pch预编译头,当然用户也可以根据需要做其他的功能实现等,采用预编译头文件方式,从而可以加速编译过程;

rc/rc2:资源文件,应用程序中用到的所有的资源,其中rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改,rc2则可根据需要只能手动修改,一般使用的时候可根据需要在rc文件中包含rc2文件;

rc2文件可以单独独立提出来,供不同工程项目rc文件include使用而不用每个工程都去创建相同的rc2文件内容,不同项目工程应有自己的rc文件,事实上rc文件中还可以包含其他的rc文件;

aps:主要记录资源信息, aps可以删除,进入程序,重新打开解决方案后会自动生成;

ico:应用程序的图标资源文件;

dllmain.cpp:DLL应用程序的入口点,这里边可以做一些库第一次加载、卸载,以及新线程加载该库时执行的相关的工作,比如通信socket、某些全局变量、共享资源、挂钩等管理;

def:一般是用作动态库导出文件,里面主要包含导出库名、描述、导出的各个函数;若不使用export导出函数或类,可采用def的方式也比较简单,而且还可以导出相同函数地址的不同得名称,其可防止导出函数重命名,以供其他编程语言或工具使用;

props/vsprops:工程属性表文件,后者为vs2008的,前者为vs2010及以后版本的,其主要包含工程属性配置相关,可以单独提取出来供不同工程项目公共使用;

pdb:调试的符号文件,程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置;

lilk:增量链接期间产生的临时文件,若取消生成,则可能导致编译链接比较慢;

obj:c、cpp编译后的二进制目标文件,内部包含程序相对地址,在链接阶段加入link与相关lib等链接,可生产exe文件;

log:主要记录编译过程中的输出信息、日志;

exe:编译、链接后产生的可执行文件,当然也可以是库,exe相对obj来说,前者提供的是绝对地址,而后者只是提供相好地址;

lib:生成的静态库文件或者动态库dll的引入库文件;

dll:动态库文件,供客户或其他开发人员使用,一般附加h头文件,或者某些还提供lib引入库或def文件;

exp:生成动态库dll时的临时导出库,主要用在多个库相应引用链接时,供IDE使用;一般客户或开发人员不会使用到该文件;

manifest:VS提供的程序部署、清单文件,内部定义了程序运行时的依赖关系、依赖的文件库,如CRT、MFC库名称和版本等信息;在早些时候编译的Debug或Release版本的程序时需要提供该清单文件,不过可以通过配置工程属性实现程序的内嵌该清单文件,此外还可以根据需要提供额外的其他清单文件。

官网介绍链接:https://docs.microsoft.com/en-us/cpp/ide/file-types-created-for-visual-cpp-projects?view=vs-2017

将VS2010工程提交给Git管理时需要哪些文件:

*.h  *.cpp   *.rc  *.sln  *.vcxproj  *.vcxproj.filters  以及res目录下的资源文件。

如果使用Git的过滤配置,则还需要.gitignore文件。

其他的诸如*.suo  *.sdf  *.opensdf  *.vcxproj.user均可以过滤掉!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章