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

news2025/1/15 23:21:26

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.coloradmin.cn/o/491487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Tool] python项目中集成使用Firebase推送功能

背景介绍 目前,App推送功能已经非常普遍,几乎所有App都有推送功能。推送功能可以自己实现,也可以使用第三方提供的推送服务(免费的收费的都有)。本文主要介绍使用Firebase提供的推送服务Firebase Cloud Messaging&…

微信小程序共享云开发环境的代码配置

微信小程序共享云开发环境的代码配置 1. 环境的分享配置2. 使用共享云开发环境的小程序代码编写2.1 初始化2.2 云函数调用 4. 拓展:共享环境的小程序获取openId4.1 小程序密钥的设置4.2 小程序内代码编写 4.3 云函数编写 小程序2022年进行了云开发付费调整&#xff…

【C++】详解二叉树进阶OJ题(更深入理解递归和非递归在二叉树的各种结构的应用)

前言: 我们在此前的初阶数据结构讲解中已经讲解了部分二叉树的OJ题,当时我们只学习了C语言,其实还有很多进阶的OJ题用C来写会比较方便和容易理解,所以本章将在讲解完二叉搜索树后来详解不同类型的二叉树进阶OJ题,校招中…

常用性能测试工具都有哪些特点?

在软件开发过程中,性能测试是不可或缺的一部分。通过性能测试,我们可以评估系统的响应速度、稳定性和容量等方面的表现,帮助我们发现和解决潜在的性能问题。而常用的性能测试工具也在不断发展和升级,成为了帮助我们完成性能测试的…

【ArcGIS Pro二次开发】(25):属性映射

属性映射经常用于属性表或Excel表的赋值,比如按用地用海表对规划用地的用地编码或用地名称赋值,将汇总好的用地指标表赋值给已经制好的Excel模板等。 下面试着在ArcGIS Pro SDK中实现功能上述这两个功能。 一、Excel表格映射到属性表Table 1、要实现的…

VMware虚拟机安装CentOS8详细教程

文章目录 一、下载安装包二、创建虚拟机1.安装 VMware2.创建虚拟机3.编辑虚拟机设置 三、系统安装1.开始安装2.时区设置3.分区设置4.配置网络6.开机密码7.配置安装源8.安装 四、系统配置1.网络检查2.配置静态IP地址 一、下载安装包 CentOS-7-x86_64【Minimal版】 https://mirro…

程序员必知必会!阿里内部热捧“Spring全线笔记”太完整了

前言 对于每一位Java开发人员来说,提起Spring定是不陌生的,实际上自Spring框架诞生以来,就备受开发者的青睐,基本上现在的互联网公司都要使用到Spring框架。Spring框架中又包含了SpringMVC、SpringBoot、SpringCloud等&#xff0…

OpenGL光照教程之 光照贴图

引言 前面的教程,我们讨论了让不同的物体拥有各自不同的材质并对光照做出不同的反应的方法。在一个光照场景中,让每个物体拥有和其他物体不同的外观很棒,但是这仍然不能对一个物体的图像输出提供足够多的灵活性。  前面的教程中我们将一个物…

关于FPGA基础知识 LCMXO2-7000HC-4TG144C MachXO2系列 FPGA可编程逻辑简介

关于FPGA基础知识 LCMXO2-7000HC-4TG144C lattice莱迪斯深力科 MachXO2系列 FPGA可编程逻辑简介 FPGA基础知识:FPGA是英文Field-Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一…

【测评】飞凌i.MX8MM开发板,为你带来卓越的影音体验

来源:飞凌嵌入式官网 OKMX8MM-C是飞凌基于NXP公司i.MX8M Mini 四核64位处理器所设计的一款开发板,主频最高达1.8GHz,可提供多种音频接口,包括I2S、AC97、TDM、PDM和SPDIF。在性能和算力都大幅提高的同时,系统的运行也更…

idea配置Tomcat服务和创建javaweb项目

前言 我的idea版本是Ultimate 2022.3 步骤 1.先创建一个空的java项目 2.点击project structure 然后点击moudle – > dependcies —>点+ 选择JArs or … 找到你安装的tomcat里面的lin依次添加jsp-api.jar、servlet-api.jar 右击项目然后点add Framework s…

SPSS如何进行生存分析之案例实训?

文章目录 0.引言1.寿命表分析2.Kaplan-Meier分析方法3.Cox回归分析 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结,本文对生存分析进行阐…

JVM虚拟机中的类加载机制和双亲委派模型

目录 虚拟机的类加载机制 名词解释 类加载的时机 类加载的过程 1.加载(Loading)阶段 非数组类型的加载阶段与数组类型区别 2.验证(Verification)阶段 1)文件格式验证 2)元数据验证 3)…

深入理解Java虚拟机——对象的创建和内存布局

1.对象的创建 首先声明这一篇博客是在HotSpot虚拟机的前提之下记录的。主要参考书籍来源于周志明老师的《深入理解JVM虚拟机》。 在语言层面,创建对象仅仅是使用一个new关键字。但是从虚拟机的角度来看,创建一个对象一共有5个步骤:类加载检查…

排序大师:探秘C语言中神奇的qsort库函数

本篇文章中会详细讲解C语言中的qsort库函数。我准备分2个方面来讲: qsort如何使用。模拟实现qsort的效果。(注意:只是用冒泡排序的思想实现类似的效果,实际qsort的底层采用的是快速排序的思想。) 如何使用 先来看看q…

反调试与反反调试

参考文本 (190条消息) C 反反调试(NtQueryInformationProcess)_(-: LYSM :-)的博客-CSDN博客 Windows 平台反调试相关的技术方法总结—part 2 - 先知社区 C/C MinHook 库的使用技巧 - lyshark - 博客园 (cnblogs.com) (177条消息) C 反反调试&#x…

C结构简单而不失强大的表格

2023年了,想必已经不会有人对嵌入式开发中“数据结构(Data Structure)”的作用产生疑问了吧?无论你是否心存疑惑,本文都将给你一个完全不同的视角。 每每说起数据结构,很多人脑海里复现的一定是以下的内容&…

unity中用异步的whenAny,实现:当点击铲子任一部件,拾取整个铲子

一、铲子的组成 铲子包含很多部件组成,当拾取铲子的时候,只要点击铲子的任意一个部件就可以。 如图,点击【木柄】、【螺母】、【铁铲】都可以拾取该物体。 (1)打开高亮 (2)等待土铲被点击&…

为什么要通过API接口来获取数据

API接口(应用编程接口 application/programming接口),准许应用程序通过定义的接口标准来访问另一个应用程序或服务的编程方式。简单来说,API就是两个软件或系统之间的通信语言或接口。 在当今的互联网时代,数据无处不…

Geospatial和Redis事务操作

一、Geospatial 1.简介 基于位置信息服务 (Location-Based Service,LBS) 的应用。 Redis3.2 版本后增加了对 GEO 类型的支持。主要来维护元素的经纬度。redis 基于这种类型,提供了经纬度设置、查询、范围查询、距离查询、经纬度hash等一些相关操作。 2.GEO底层结构…