Microsoft Visual Studio 文件识别及其用途简述
Microsoft Visual Studio IDE开发工具集,目前已推出多个不同版本,从之前的VC4.0到现在的VS2015,各个版本都会或多或少的功能或性能上的修改、提升,具体的改进地方可去官网了解;
但无论如何,其始终只是一个开发工具,帮助开发人员快速、高效地完成工作,合理而有效的利用开发工具便成为利器,较为旧版本的VS IDE可以认为淘汰了;
故以下针对VS2008、VS2010至VS2015等版本进行的VC++开发等相关了解、学习;
部分文件识别:
VS2008 新建项目后会产生相应的文件sln、ncb、suo、以及相应项目工程文件夹,项目工程文件夹下包括vcproj、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件,
若是MFC工程,可能还有rc文件、Resource.h文件以及res文件夹下的rc2、ico资源文件等;
VS2010/VS2010/VS2012/VS2013 新建项目后会产生文件sln、suo、sdf、ipch文件夹下的ipch文件、项目工程文件夹下包括vcxproj、vcxproj.user、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件,
若是MFC工程,可能还有rc、aps、Resource.h文件以及res文件夹下的rc2、ico资源文件等;
VS2015 新建项目时会产生sln、VC.db、VC.VC.opendb、ipch文件夹下的ipch文件、.vs文件夹下的.suo文件,项目工程文件夹下包括vcxproj、vcxproj.user、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件,
若是MFC工程,可能还有rc、aps、Resource.h文件以及res文件夹下的rc2、ico资源文件等;
另外以上IDE下,对于其他工程类型的还有dllmain.cpp、def、props/vsprops文件等;
此外各个工程编译、链接、生成过程中的各种中间文件、调试文件、最终文件等,比较常见的pdb、ilk、obj、log、pch、exe、lib、dll、exp、manifest,而某些中间文件可以不用理会;
以上提到的分别简单说明记录一下,仅供了解;
sln:解决方案文件,主要包括工程项目组织结构、位置、工程编译环境配置等信息,具体感兴趣的可以去http://blog.csdn.net/beijiguangyong/article/details/6460586了解;其记录的信息不算多;
ncb:(no compile browser)VC++自动创建的信息跟踪文件,可以删除,重新打开解决方案后会自动再次创建,此文件一般比较大;
suo:储存了用户界面的自定义配置,包括布局、断点和项目最后编译的而又没有关掉的文件等,以便下一次你打开Visual Studio可以恢复这些设置,一般为隐藏文件;
sdf:解决方案工程信息数据库文件,此文件同ncb文件,都比较大,也可以删除,重新打开解决方案后会自动创建,主要提供提供的智能感知、代码恢复等信息;
ipch:主要保存预编译的头文件和智能提示信息用的,也可以删除,重新打开解决方案后会自动创建;
VC.db:SQLite3格式的文件,里面应是项目相关的文件信息,同ncb、sdf文件,一般比较大可删除,重新打开解决方案后会自动创建;
VC.VC.opendb:此文件在项目打开的时候创建,关闭的时候自动删除,目前作用未知;
vcproj、vcxproj:项目工程文件,里面包含的该工程的工具集、工程编译、链接、调试等相关的配置;不同VS IDE的项目转化,可以通过修改此文件实现,低版本转高版本IDE,则直接打开即可,而高版本转到低版本需要修改工程文件,另外版本间转化可能会出现某些API使用等限制,可能需要修改、替换;vcproj与vcxproj内容、结构还是有所差异,转化时需要修改的地方比较多,如果修改的地方比较多,可以重新建立工程将相应文件添加进去,修改工程属性也可;
vcxproj.user:不同用户有不同的本地用户配置,主要是一些窗体布局、位置等,与项目具体内容一般无关,可删除;
filters:一般为虚拟目录,及项目工程解决方案视图下分类过滤器目录,一般不要删除,否则可能导致所有文件杂糅在一起;
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:调试的符号文件,用于保存调试的信息供VS IDE调试使用;
ilk:增量链接期间产生的临时文件,若取消生成,则可能导致编译链接比较慢;
obj:c、cpp编译后的二进制目标文件,内部包含程序相对地址,在链接阶段加入link与相关lib等链接,可生产exe文件;
log:主要记录编译过程中的输出信息、日志;
exe:编译、链接后产生的可执行文件,当然也可以是库,exe相对obj来说,前者提供的是绝对地址,而后者只是提供相好地址;
lib:生成的静态库文件或者动态库dll的引入库文件;
dll:生成的动态库dll;
exp:生成动态库dll时的临时导出库,主要用在多个库相应引用链接时,供IDE使用;一般客户或开发人员不会使用到该文件;
manifest:VS提供的程序部署、清单文件,内部定义了程序运行时的依赖关系、依赖的文件库,如CRT、MFC库名称和版本等信息;
重要文件说明:
pdb:调试的符号文件,程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置;具体可以参见另外一篇文章《Microsoft Visual Studio PDB文件相关事宜》。
obj:c、cpp编译后的二进制目标文件,一般提供给IDE链接用的,当然也可以将其发给客户或开发人员使用并提供h头文件,不过这样的做法很少,一般给用户的是编译后的dll或exe;
lib:分为静态库文件和动态库dll的引入库文件,前者供其他模块或程序静态链接,后者只是提供方便的隐式链接而不是调用LoadLibrary和频繁的GetProcessAddress;
dll:动态库文件,供客户或其他开发人员使用,一般附加h头文件,或者某些还提供lib引入库或def文件;def获取到lib可参见另外一篇文章《通过dll或def文件提取lib导入库文件》介绍使用说明;
manifest:VS提供的程序部署、清单文件,在早些时候编译的Debug或Release版本的程序时需要提供该清单文件,不过可以通过配置工程属性实现程序的内嵌该清单文件,此外还可以根据需要提供额外的其他清单文件;具体的使用、注意事项可以参见另外一篇文章《Microsoft Visual Studio 开发的C++程序软件发布相关事宜》;
props/vsprops:工程属性表文件,具体可参见另外一篇文章《Microsoft Visual Studio 工程属性表props/vsprops创建与使用》;
小结:在实际的项目开发中需要了解并掌握常用的工程属性配置、VS提供的各种工具、快捷键操作、常用插件使用、文件识别与修改、调试跟踪、优化、版本管理等;更为重要的还是设计、编码实现上;
此后将针对各个重要的环节进行简单的分析、记录。
Microsoft Visual Studio 文件识别及其用途简述的更多相关文章
- Microsoft Visual Studio 2015 下载、注册、安装过程、功能列表、问题解决
PS:请看看回复.可能会有文章里没有提到的问题.也许会对你有帮助哦~ 先上一张最终的截图吧: VS2015正式版出了,虽然没有Ultimate旗舰版,不过也是好激动的说.哈哈.可能有的小伙伴,由于工作 ...
- Microsoft Visual Studio PDB文件相关事宜
Microsoft Visual Studio PDB:调试的符号文件,程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置: 当以 /ZI 或 /Zi(用于 C/C ...
- Microsoft Visual Studio 2008 未能正确加载包“Visual Web Developer HTML Source Editor Package” | “Visual Studio HTM Editor Package”
在安装Microsoft Visual Studio 2008 后,如果Visual Studio 2008的语言版本与系统不一致时,比如:在Windows 7 English System 安装Vi ...
- AO安装需要Microsoft Visual Studio 2013?
从接触ArcGIS9.2到 10.4,在不断升级的 过程中,既给我们带来了很多惊喜,也带来一些麻烦,因为ArcGIS版本不兼容.出于体验,安装了ArcGIS Desktop10.4,AO也得升到10. ...
- please wait while windows configures microsoft visual studio professional 2013 [转载]
2016年5月30日 VS3013安装update 2以后,打开offie出现"please wait while windows configures microsoft visual s ...
- [转]SSAS没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) (Microsoft Visual Studio)的解决办法
转自:http://www.cnblogs.com/xvqm00/archive/2011/07/15/2107338.html 打开SSAS 数据源视图浏览数据时,提示 没有注册类别 (异常来自 H ...
- Microsoft Visual Studio 2012注册密钥
Microsoft Visual Studio Ultimate 2012 旗舰版 有效注册密钥:YKCW6-BPFPF-BT8C9-7DCTH-QXGWCMicrosoft Visual Studi ...
- Microsoft Visual Studio Ultimate 2013 Update 2 RC 英文版--离线完整安装ISO+简体中文语言包
VS2013.2_RC_EN_Full.iso:名称:Microsoft Visual Studio 2013版本:Ultimate 2013 Update 2 RC语言:English在线下载:ht ...
- 转:与Microsoft Visual Studio集成良好的第三方工具
我们都知道,Microsoft Visual Studio(简称VS)是微软开发的一个非常高效的集成开发环境,但即使已经发展到VS2012,仍然有许多不尽人意的地方.一般来讲,一个项目中需要有控件.代 ...
随机推荐
- H5+CSS3知识点
概要:CSS3美化样式.自定义字体图标.滤镜设置.CSS3选择器.transform2D转换.新增表单控件.vaild表单验证.表单样式美化等. 属性选择器: E[attr]只使用属性名,但没有确定任 ...
- 12月15日下午Smarty模板函数
1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...
- SpringMVC工作原理
SpringMVC的工作原理图: SpringMVC流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherServlet收到请求调用HandlerMa ...
- MySQL练习-employees数据库(二)
department 部门表 dept_emp 部门员工任职期表(按部门&时期) dept_manager 部门经理任职期表(按时期) employees 员工详情表 salaries 员工薪 ...
- 同步(Synchronous)和异步(Asynchronous)
目录 概念性 图示例 举个例子 回到顶部 概念性 同步和异步通常用来形容一次方法调用. 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为. 异步方法调用更像一个消息传递,一旦开始 ...
- 一些LINQ的使用
var list = from staff in staffList from extraRecord in extraList where staff.staffID == extraRecord. ...
- Appcan——Box
Box架构 ub….. Box架构元素空间大小分配比例 ub-f……. Ub-f1,ub-f2,ub-f3……. Box架构元素垂直方向的位置排列 ub-ac,ub-ae… -webkit-box-a ...
- vim 添加php自动补全 并格式化代码
自动补全,修改/etc/vimrc的配置 vim /etc/vimrc 添加: filetype plugin on autocmd FileType php set omnifunc=phpcomp ...
- C++基础知识(5)---类和对象
终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...
- c coroutine
今天看了下云风c coroutine 代码 博客,发现 coroutine 实现原理其实还比较简单,就用户态栈切换,只需要几十行汇编,特别轻量级. 具体实现 1. 创建一个coroutine: 也就 ...