VS解决方案文件格式说明
作者:朱金灿
来源: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解决方案文件格式说明的更多相关文章
- WPF学习(9)样式和行为
在asp.net世界中,我们的美工人员会为我们准备好静态页面,它注意包括三个部分:html.css和js.而在WPF世界里,也同样有着类似这三个部分的静态页面:Xaml.Style和Behaviors ...
- 如何在VS 2010中使用 VS2013的解决方案(转)
今天要用VS2010打开VS2013,一直觉得VS2010到VS2012只是界面上扁平化的改变,平台工具集有改变但很大程度上可能向上兼容.在网上搜了一些文章,其中有一篇说到一个观点: 从 ...
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- 转载文档:Storm实战常见问题及解决方案
该文档为实实在在的原创文档,转载请注明: http://blog.sina.com.cn/s/blog_8c243ea30101k0k1.html 类型 详细 备注 该文档是群里几个朋友在storm实 ...
- C#下搭建文件格式转换服务器
文件格式转换,相信很多涉及到office文档在线观看的都会需要,因为浏览器还不能完全支持直接打开office文档,所以很多情况下我们都需要将这些文档转换成flash能够播放的格式,但是另一个问题又来了 ...
- [转]Ionic + AngularJS angular-translate 国际化本地化解决方案
本文转自:http://www.cnblogs.com/maoyazhi/p/4332362.html 欢迎访问我们的网站,网站上有更多关于技术性的交流:http://www.ncloud.hk/技术 ...
- 在VS 2010中使用 VS2013的解决方案
本文转载自:http://blog.csdn.net/u011543589/article/details/25563351 今天要用VS2010打开VS2013,一直觉得VS2010到VS2012只 ...
- “System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本” 的解决方案
在项目部署过程中ORACLE客户端多次会遇"System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&qu ...
- asp.net输出docx文档出现【文件已损坏 无法打开】问题的解决方案
在某个项目中,有个需求需要将一些附件文档以字节流的形式直接存储在数据库中. 功能实现后,尝试过很多格式文件的上传下载处理,均未发现问题, 唯独在下载docx格式文件后,一打开文件就提示: “无法打开文 ...
随机推荐
- POJ 1932 XYZZY (ZOJ 1935)SPFA+floyd
http://poj.org/problem?id=1932 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1935 题目大 ...
- 11995 - I Can Guess the Data
大意:猜数据结构是栈.队列或者优先队列,可能为两种以上,也可能都不是. 水题.. STL 记得判断是否为空 #include<iostream> #include<cstdio> ...
- Remove Duplicates from Sorted Array [Python]
Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...
- C#无符号右移
/// <summary> /// 无符号右移,与JS中的>>>等价 /// </summary> /// & ...
- nginx 代理服务器
目前现状:只有1个机器能上网(web),其他机器不能方法:能上网的做一个代理web服务器中转,其他机器连接它即可。采用nginxNginx配置如下:server{ resolver 8. ...
- 31、CMOS摄像头说明
ov7740(摄像头模块) 输入信号: 自然景观等的模拟信号输出信号: RGB.YUV格式的数字信号 1). 常用参数输入信号: 自然景观等的模拟信号输出信号: 输出格式为:RAW RGB.YUV输出 ...
- Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析
原文地址: https://blog.csdn.net/yx0628/article/details/80873774 一个简单的Spring定时任务的 demo,全部代码见下载地址:https:// ...
- VCS编译仿真警告Warning
VCS编译仿真警告Warning 问题描述 在较大的SOC集成中,通常使用Perl脚本例化子模块到Top层,然而,有时会出现例化出来的输入端口名没有在Top层定义,而且端口的位宽为1bit,那么,ve ...
- Xcode6 模拟器路径
Xcode6公布后,出现了非常多的变动,功能性的变动,在这里不进行过多的赘述,在WWDC上苹果已经进行了讲述,网上也有非常多文章,这里要介绍的是一些不太easy发现的,但非常重要的小地方. ...
- js进阶正则表达式7点数字字母空格(w d s)(小写表原意,大写表反义)(特殊字符要加反斜杠:var reg22=/\W/g)
js进阶正则表达式7点数字字母空格(w d s)(小写表原意,大写表反义)(特殊字符要加反斜杠:var reg22=/\W/g) 一.总结 1.w d s,word digital space 2.特 ...