• 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,'',_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两种。





  • 相关阅读:
    关于mysql主从架构master宕机
    恢复drop后的表空间
    rman 恢复drop 表空间模拟恢复
    backup controlfile 和create standby controlfile
    catalog
    rman恢复表(不完全恢复)--需要关闭数据库
    rman备份恢复
    oracle DG 启动和关闭顺序
    ASM-本地数据拷贝
    图解Java设计模式之模板模式
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470529.html
Copyright © 2020-2023  润新知