在某个契机的引发下,对VS解决方案中自动生成的.vs
文件夹产生了兴趣,以前总对这个文件夹不怎么上心,最近正好遇到点情况来搞懂.vs
目录究竟有什么作用。
这里直接先将我摸索出的结果贴出来,文章后面会一一详细说明和分析:
.vs
目录是用来存储当前用户在解决方案中的工作配置,具体包括VS关闭前最后的窗口布局、最后打开的选项卡/操作记录/文件文档、某些自定义配置/开发环境、调试断点等这类设置信息和状态。这样每当用户关闭解决方案后再重新打开,就能继续之前的工作状态。在VS2015之前的版本,这些信息都是散乱的保存在解决方案根目录下(最明显的参照物就是
.suo
文件),现在是将这些统一放在.vs
这个隐藏文件夹里,如果没在Windows系统中开启查看隐藏的文件和文件夹,还是很容易无视的。通常来说如果团队有使用源代码版本管理系统,这个文件夹都是要加入忽略规则的,毕竟没必要同步每个人的使用习惯和当前工作进度。而且
.vs
目录本身具有临时性,就算删除后也完全不影响解决方案的启动和运行,反正vs也会自动重新生成,只是之前的工作配置及记录没有了,也就是相当于第一次打开这个项目。
这里先随便新建一个ASP.NET MVC项目以作为案例(最好能先生成下),我是用VS2017新建的项目,VS2015应该也是可以,老版本VS则不会出现这个文件夹。打开解决方案所在目录,先查看.vs的内部结构:
.vs
目录下只有两个文件夹,其中config
文件夹里面只保存了一个applicationhost.config
文件,这个比较容易理解,就是IIS Express的配置文件,如果项目不是ASP.NET项目则没有这个文件夹,其他的项目类型或多或少也会有类似特定的文件:
另外一个文件夹名称是根据当前项目的解决方案名称来的,这里因为是随便新建的项目所以名称是WebApplication1
(VS中ASP.NET项目默认的命名格式),此文件夹下目前只有一个vs15
文件夹,这里要注意15
是Visual Studio 2017的版本号,我们平常说的VS2017是产品名称!这点算是老生常谈的知识点了,对应的VS2015版本号为14,以此类推。也就是说如果当前解决方案有用其他版本的VS打开,这里就会生成对应版本的文件夹:
继续查看vs15
目录,里面分别有.suo
文件和一个sqlite3
文件夹:
.suo
文件也是老朋友了,如果不明白的朋友可以网上搜索下,可以参考下这篇文章:Visual Studio中的.suo(Solution User Options)文件。总的来说就是记录用户在当前解决方案中设置的断点、书签之类的信息。
最后讲下sqlite3
文件夹,看到名字就想起了SQLite数据库(版本3的),文件夹里面只有一个storage.ide
文件,也不知道是干嘛的,网上搜索了会也没找到什么相关资料,只能自己鼓捣鼓捣。一开始用文本打开后发现是乱码,想了想虽然文件是.ide
的后缀,但说不定其实就是一个SQLite数据库文件,结果用SQLite数据库打开一看还真的是!
PS:SQLite是一个嵌入式数据库,如果对它不熟悉还是建议到官网或网上找资料了解下。
先在SQLite的命令行工具中连接数据库(storage.ide
文件),这里我为了方便操作便将项目的storage.ide
文件直接复制到命令行工具的根目录下。接下来查询下数据库中有哪些表,一共有DocumentData1
,ProjectData1
,SolutionData1
,StringInfo1
这四张表:
PS:截图中的.table
命令是查询当前数据库的表,.header on
命令是开启列名称,.mode column
是设置显示模式为列模式,这里稍微提下,是SQLite命令行工具的语法。
先看下这4张表查询出的数据截图:
SolutionData1
表的数据比较长会导致排版错乱,特意切换了显示模式:
贴下storage.ide
里面表的结构截图:
恩,总体上来说,除了一些blob
数据类型(二进制大对象)的字段,其他的要么我看不懂,要么就是和解决方案有关的数据,就是这样,不想继续探索下去了,感觉已经超出我的能力范围了:
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/99056.html