VS解决方案文件格式说明
2013-08-17 18:34
253 查看
作者:朱金灿
来源:http://blog.csdn.net/clever101
VS解决方案文件本质是一个文件文件,这个用记事本或者Node++之类的文本编辑软件打开一个VS解决方案文件就知道了。了解了这一点,我们知道使用c语言的文件操作函数就能读取VS解决方案文件了。下面是一个简单的读取函数:
上述代码实现读取的是vs2008的解决方案文件,在win7旗舰版,vs 2008+sp1运行成功,效果图如下:
现在我们分析vs2008的解决方案文件存储的是什么信息?使用文本工具进行分析可以推断,我初步判断vs2008的解决方案文件可以划分为三部分:
第一部分为解决方案文件说明,第二部分为工程文件说明,以第一个Project开始,第三部分为工程平台设置,以Global开始,以EndGlobal结束。下面逐一作具体说明:
一个空的解决方案文件(即不包含任何工程)只有第一和第三部分,具体如下:
第一部分一般只有三行
第一行为空行
第二行为VS解决方案文件格式的版本说明,
如VS2008MicrosoftVisual Studio Solution File, Format Version 10.00
第三行为上一行的VS版本注释,如# Visual Studio 2008,可推断VS2005对应的解决方案文件版本为9.00
第二部分为工程说明,这里的工程分为源码工程和虚拟文件夹。
单个工程说明的格式为
Project("{工程类型标识}") = "工程名", "工程文件相对解决方案文件的位置", "{工程标识}"
ProjectSection(ProjectDependencies)= postProject # 所依赖的工程
所依赖工程1的标识 =所依赖工程1的标识
EndProjectSection
EndProject
若无依赖工程,则无ProjectSection(ProjectDependencies) = postProject这个部分。
在VS2008中,源码工程的标识为8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942,虚拟文件夹的标识为2150E333-8FDC-42A3-9474-1A3956D46DE8,貌似都是GUID。虚拟文件夹并无对应的工程文件,因此在位置一项中取其名字。
第三部分为工程平台设置。这里的工程平台设置分为两部分,一是解决方案配置,二是对应的解决方案平台,具体如下图:
从上图可知,所有的工程配置数等于解决方案配置数乘以解决方案平台。
这部分的具体说明如下:
上面值得注意的是每一种设置都分为ActiveCfg和Build.0两种。
来源:http://blog.csdn.net/clever101
VS解决方案文件本质是一个文件文件,这个用记事本或者Node++之类的文本编辑软件打开一个VS解决方案文件就知道了。了解了这一点,我们知道使用c语言的文件操作函数就能读取VS解决方案文件了。下面是一个简单的读取函数:
#include "stdafx.h" #include <tchar.h> #include <string> int _tmain(int argc, _TCHAR* argv[]) { std::wstring strSlnFile = _T("G:\\dev-utility-tools\\src\\dev-utility-tools.sln"); FILE* fp; TCHAR szBuff[3*_MAX_PATH];// 设定读取缓冲区为*260 if( (fp = _tfopen(strSlnFile.c_str(),_T("r"))) != NULL ) { memset(szBuff,'\0',_MAX_PATH*3*sizeof(TCHAR)); while(_fgetts( szBuff,_MAX_PATH*3*sizeof(TCHAR), fp ) ) { _tprintf(_T("%s"),szBuff); } } getchar(); return 0; }
上述代码实现读取的是vs2008的解决方案文件,在win7旗舰版,vs 2008+sp1运行成功,效果图如下:
现在我们分析vs2008的解决方案文件存储的是什么信息?使用文本工具进行分析可以推断,我初步判断vs2008的解决方案文件可以划分为三部分:
第一部分为解决方案文件说明,第二部分为工程文件说明,以第一个Project开始,第三部分为工程平台设置,以Global开始,以EndGlobal结束。下面逐一作具体说明:
一个空的解决方案文件(即不包含任何工程)只有第一和第三部分,具体如下:
Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal
第一部分一般只有三行
第一行为空行
第二行为VS解决方案文件格式的版本说明,
如VS2008MicrosoftVisual Studio Solution File, Format Version 10.00
第三行为上一行的VS版本注释,如# Visual Studio 2008,可推断VS2005对应的解决方案文件版本为9.00
第二部分为工程说明,这里的工程分为源码工程和虚拟文件夹。
单个工程说明的格式为
Project("{工程类型标识}") = "工程名", "工程文件相对解决方案文件的位置", "{工程标识}"
ProjectSection(ProjectDependencies)= postProject # 所依赖的工程
所依赖工程1的标识 =所依赖工程1的标识
EndProjectSection
EndProject
若无依赖工程,则无ProjectSection(ProjectDependencies) = postProject这个部分。
在VS2008中,源码工程的标识为8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942,虚拟文件夹的标识为2150E333-8FDC-42A3-9474-1A3956D46DE8,貌似都是GUID。虚拟文件夹并无对应的工程文件,因此在位置一项中取其名字。
第三部分为工程平台设置。这里的工程平台设置分为两部分,一是解决方案配置,二是对应的解决方案平台,具体如下图:
从上图可知,所有的工程配置数等于解决方案配置数乘以解决方案平台。
这部分的具体说明如下:
Global # 开始符 # 列出解决方案所有的配置数 GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection #指定每个工程的具体配置 GlobalSection(ProjectConfigurationPlatforms) = postSolution {01EA6707-BDD4-4074-A5F0-CBCEB660E094}.Debug|Win32.ActiveCfg = Debug|Win32 {01EA6707-BDD4-4074-A5F0-CBCEB660E094}.Debug|Win32.Build.0 = Debug|Win32 {01EA6707-BDD4-4074-A5F0-CBCEB660E094}.Release|Win32.ActiveCfg = Release|Win32 {01EA6707-BDD4-4074-A5F0-CBCEB660E094}.Release|Win32.Build.0 = Release|Win32 {CC14F446-E0CF-4296-B4F4-F712D6B4DC45}.Debug|Win32.ActiveCfg = Debug|Win32 {CC14F446-E0CF-4296-B4F4-F712D6B4DC45}.Debug|Win32.Build.0 = Debug|Win32 {CC14F446-E0CF-4296-B4F4-F712D6B4DC45}.Release|Win32.ActiveCfg = Release|Win32 {CC14F446-E0CF-4296-B4F4-F712D6B4DC45}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal # 结束符
上面值得注意的是每一种设置都分为ActiveCfg和Build.0两种。
相关文章推荐
- VS解决方案文件格式说明
- vs技巧分享:多程序集解决方案里临时文件清除和生成目录里依赖的第3方类库外部文件自动生成
- Java读取txt或其他文件以UTF-8格式输出的时候,第一行代码出现“?”乱码的原因及解决方案!
- Mach-O文件格式说明及从中提取机器指令
- VS2012 编译程序时报无法加载PDB文件错误解决方案(转自http://www.aiuxian.com/article/p-236400.html)
- C++ MFC / VS2013 之二 解决方案各个文件结构
- 未能加载文件或程序集“****”或它的某一个依赖项。试图加载格式不正确的程序。解决方案总结
- ELF格式文件特点的简单说明
- The Portable Executable File Format PE文件格式英文说明文档
- IE Cookie文件格式说明
- Xcode工程文件的格式说明
- IAR切BANK--命令连接器文件xcl格式说明
- etc/passwd和etc/shadow文件格式说明
- VS调试时JSON格式文件加载不了
- 仿百度文库解决方案(四)-调用swfTools把pdf格式文件转换成swf格式文件
- VS代码文件中添加协议格式
- VS2013中将新建的源码文件的编码格式自动设置成UTF8
- 五轴数控铣削后处理技术&CLSF刀位文件格式说明
- class文件格式说明
- 网狐荣耀版vs生成解决方案时出现“出现未能写入日志,请求的操作无法在使用用户映射区域打开的文件上执行“错误