【genius_platform软件平台开发】第九十七讲:常见Visual Studio版本号对应表VisualStudioVersion

news/2025/3/15 3:31:32/

1. sln文件格式

  • 使用记事本打开.sln文件,
  • 在这里插入图片描述

从一个外行角度看,VC/VS有3种版本号,具备一定的迷惑性:(xx表示具体的数字)

MSVC++ xx(VC版本 eg. VC6.0)

_MSC_VER

VisualStudio xx(VS版本 eg. VS2012)

对照关系整理如下(更新至2022.11.9):

VC 版本 _MSC_VER VS 版本 MSVC toolset version

VC6.0 1200 VS 6.0
VC7.0 1300 VS2002
VC7.1 1310 VS2003
VC8.0 1400 VS2005 80
VC9.0 1500 VS2008 90
VC10.0 1600 VS2010 100
VC11.0 1700 VS2012 110
VC12.0 1800 VS2013 120
VC14.0 1900 VS2015 140
VC15.0 [1910,1916] VS2017 141
VC16.0 [1920,1929] VS2019 142
VC17.0 [1930,) VS2022 143

2. 解决方案(fangan.sln)文件

解决方案就是Visual Studio中用来组织项目的结构。.sln文件包含基于文本编写的信息,可用ultraedit打开,编译环境通过这些信息找到并且加载他引用到的持久数据和VSPackages项目。当用户打开解决方案的时候编译环境通过包含在.sln文件中的preSolution,Project,postSolution信息加载解决方案,包含在解决方案中的项目以及任何和解决方案有联系的持久信息。

3.文件版本(运行平台信息)

Microsoft Visual Studio Solution File, Format Version 12.00
#Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1

4.工程信息(包含的项目信息)

Project(“{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}”) = “ssyy1”, “ssyy1\ssyy1.vcxproj”, “{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}”
EndProject
Project(“{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}”) = “ssyy2”, “ssyy2\ssyy2.vcxproj”, “{4773F960-EFEC-4C69-B583-671A3237EE72}”
EndProject
项目全局唯一标识符(GUID)以及项目类型的全局唯一标识符(GUID)
前面的"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"是项目类型全局统一标识符,项目的全局唯一标识符(GUID)被传递到IVsProjectFactory用来加载和项目有关的特殊的VSPackage,然后这个项目被载入。在上面的代码中被载入的VSPackage是Windows (Visual C++) ,因为我们创建的两个项目ssyy1、ssyy2都是Visual C++项目。

后面的"{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}"是项目实例全局唯一标识符,用于在该解决方案中标识该项目的唯一性。每个项目中都存在一个唯一的项目实例ID,只有这样这个项目才能被其他解决方案中需要他的项目使用。理想状态下,如果解决方案和项目在源代码控制之下,项目的路径应该和解决方案的路径是相关的。当解决方案被第一次加载时,项目文件不能够存在于用户的电脑中。将项目文件存放在和解决方案文件相关的服务文件中,通过这个方法将相对简单的找到项目文件或者将项目文件复制到用户的电脑中。然后编译环境复制并加载剩下的项目所需文件。

GUID是确定的值:

部分VS项目GUID罗列如下:Windows (C#)           {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET)       {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C++)   {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Web Application        {349C5851-65DF-11DA-9384-00065B846F21}
Web Site               {E24C65DC-7377-472B-9ABA-BC803B73C61A}
WCF                    {3D9AD99F-2412-4246-B90B-4EAA41C64699}
WPF                    {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
XNA (Windows)          {6D335F3A-9D43-41b4-9D22-F6F17C4BE596}
XNA (XBox)             {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}
XNA (Zune)             {D399B71A-8929-442a-A9AC-8BEC78BB2433}
Silverlight            {A1591282-1198-4647-A2B1-27E5FF5F6F3B}
ASP.NET MVC            {F85E285D-A4E0-4152-9332-AB1D724D3325}
ASP.NET MVC 4          {E3E379DF-F4C6-4180-9B81-6769533ABE47}
Test                   {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Solution Folder        {2150E333-8FDC-42A3-9474-1A3956D46DE8}

5…全局设置(全局变量)

Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}.Debug|x64.ActiveCfg = Debug|x64
{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}.Debug|x64.Build.0 = Debug|x64
{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}.Debug|x86.ActiveCfg = Debug|Win32
{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}.Debug|x86.Build.0 = Debug|Win32
{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}.Release|x64.ActiveCfg = Release|x64
{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}.Release|x64.Build.0 = Release|x64
{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}.Release|x86.ActiveCfg = Release|Win32
{D1345DA1-6889-443F-975E-8FB1FEFEC1BC}.Release|x86.Build.0 = Release|Win32
{4773F960-EFEC-4C69-B583-671A3237EE72}.Debug|x64.ActiveCfg = Debug|x64
{4773F960-EFEC-4C69-B583-671A3237EE72}.Debug|x64.Build.0 = Debug|x64
{4773F960-EFEC-4C69-B583-671A3237EE72}.Debug|x86.ActiveCfg = Debug|Win32
{4773F960-EFEC-4C69-B583-671A3237EE72}.Debug|x86.Build.0 = Debug|Win32
{4773F960-EFEC-4C69-B583-671A3237EE72}.Release|x64.ActiveCfg = Release|x64
{4773F960-EFEC-4C69-B583-671A3237EE72}.Release|x64.Build.0 = Release|x64
{4773F960-EFEC-4C69-B583-671A3237EE72}.Release|x86.ActiveCfg = Release|Win32
{4773F960-EFEC-4C69-B583-671A3237EE72}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

preSolution和postSolution分别是在solution启动前启动后执行的操作。

6.fangan.VC.db

用vs2015创建Visual C++项目,编写生成后,每次都会生成一个project_name.VC.db文件,而且会随着你工程修改运行变的越来越大。

project_name.VC.db是sqlite后端用于百intellisense的新数据库,度相当于之前的*.sdf SQL Server Compact数据库。它与VS2015提供的智能感知、代码恢复、团队本地仓库内功能有关,VS重新加载解决方案时速度超快。如果不需要,可以禁止,就不会产生该文容件了。

如果你不想生成该文件或不需要生成该文件的话可以通过以下方式取消:
设置方法:工具–》选项–》文本编辑器–》C/C++–》高级,把回退位置和警告设置为true或者禁用数据库设为true,这样就不会产生那个文件了。

7.XXX.vcxproj

vcxproj是工程的配置文件问,管理工程中细节比如包含的文件,引用库等。一般没有sln,也答可以专直接打开vcxproj,也可以重新生成sln。

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

8. XXX.vcxproj.filters

*.vcxproj.filters就是用于项目下文件的虚拟目录,不能丢弃。可理解为视图文件,定义了工程在VS中打开后的目录结构,修改该文件后重新build时vs不会重新build工程。vcxproj.filters文件是过滤信息文件,解决方案中的筛选器文件就保存在此文件中。

vcxproj.user是本地化用户配置,允许多个用户使用自己喜好的方式配置这个项目(例如打开项目时候窗体位置等与项目内容无关的配置), 不需要添加到版本控制中。

  • 在解决方案目录下的是最终文件(即可执行文件)存放的目录,在工程目录下的是中间文件(编译生成的.obj等其他文件)存放的目录,中间文件对用户来说没什么用的,只是在链接成最终文件时有用到。Debug只是为调试人员存在的。

9. XXX_main.obj文件

  • 由编译器或汇编工具生成的目标文件,是模块的二进制中间文件。有几个cpp就生成几个obj文件,单独编译的,之间没有联系。因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以这个obj目录的作用就是保存这些小块的编译结果,加快编译速度。

10.XXX.log文件

  • 日志记录文件,是文本内容。

10.XXX.Build.CppClean.log

  • 当点击“重新生成解决方案”的时候会有,否则没有。

10.XXX.tlog文件夹

  • 相关记录文件,比如编译时候用到的库的头文件等;

10.XXX.pdb

  • 是存放代码中断点等调试信息的,程序的pdb既是输出文件又是输入文件,因为LINK在重新构建程序时更新pdb。

10.XXX.idb

  • 是记录了哪些文件是修改过的,需要重新编译的。

10.XXX.pch

  • 是预编译头文件,存放工程中较稳定的代码。

http://www.ppmy.cn/news/61669.html

相关文章

跨语言RPC框架Thrift入门

文章目录 一、Thrift介绍二、IDL语法详解基本数据类型特殊数据类型集合容器枚举类型常量、类型别名struct类型异常servicenamespaceinclude 参考 一、Thrift介绍 Thrift:一个轻量级、跨语言(不同语言之间可以进行调用)的RPC框架,…

Yunzai-Bot插件编写指南

Yunzai-Bot插件编写教学 前言 需要node.js基础,需要会使用redis数据库,推荐使用VScode编写☞下载 单个的js格式插件(example) oicq文档先新建一个文件,命名为Helloworld.js命名可以改的,最好别用中文,改命名时要记得把下面的类名改了(大小…

python 开发 1 之 拷贝文件

目录 一、需求: 二、python拷贝分析 1、需要的库,及源路径、目标路径定义 2、定义的拷贝数组 3、自定义拷贝函数 1) 如果目标路径不存在时,先创建目标路径 2)遍历元组数组中的文件 3)如果源文件或目…

[数据库系统] 二、表的基本操作(educoder)

目录 第一关:修改表名 一、知识点 ①查看所有表:show tables; ②查看表基本结构:DESCRIBE 表名; 或 简写为 desc 表名; ③查看创建表的语句:SHOW CREATE TABLE 二、educoder 第二关: 修改表结构-1 一、…

如何在Jetpack Compose中设置渐变背景

如何在Jetpack Compose中设置渐变背景 只需几步即可通过平滑渐变增强应用程序的用户界面 虽然它经常出现在网络前端的世界中,但渐变背景可以为您的移动应用程序增添专业和美观的触感,使其对您的用户更具吸引力。 第 1 步:创建渐变画笔 为…

Thingsboard开源物联网平台智慧农业实例快速部署教程(三)【源码部署及logo更换】

Thingsboard源码安装并更换logo 文章目录 Thingsboard源码安装并更换logo1. 源码拉取2. 导入项目3. 项目编译4. 项目启动5. 修改logo6. 部署(rpm deb方式) 1. 源码拉取 本教程按照3.4发行版本行进 git clone https://github.com/thingsboard/thingsboa…

SQLite安装配置

1.什么是 SQLite? SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite源代码不受版权限制。 SQLite是…

java获取文件夹下所有文件名

在进行 Java编程的过程中,我们会经常使用到文件夹下的所有文件名。有时候可能不太熟悉 Java编程的小伙伴们会发现,在代码中没有获取到所有的文件名,那么这个时候我们应该怎么去获取到这些文件呢?在进行 Java编程的过程中&#xff…