/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

探究Visual Studio生成的.vs文件夹内部结构和作用

2017-10-22 十有三 3 浏览:24377 开发工具 ASP.NET | Visual Studio

在某个契机的引发下,对VS解决方案中自动生成的.vs文件夹产生了兴趣,以前总对这个文件夹不怎么上心,最近正好遇到点情况来搞懂.vs目录究竟有什么作用。

这里直接先将我摸索出的结果贴出来,文章后面会一一详细说明和分析:.vs目录是用来存储当前用户在解决方案中的工作配置,具体包括VS关闭前最后的窗口布局、最后打开的选项卡/操作记录/文件文档、某些自定义配置/开发环境、调试断点等这类设置信息和状态。这样每当用户关闭解决方案后再重新打开,就能继续之前的工作状态。

在VS2015之前的版本,这些信息都是散乱的保存在解决方案根目录下(最明显的参照物就是.suo文件),现在是将这些统一放在.vs这个隐藏文件夹里,如果没在Windows系统中开启查看隐藏的文件和文件夹,还是很容易无视的。

通常来说如果团队有使用源代码版本管理系统,这个文件夹都是要加入忽略规则的,毕竟没必要同步每个人的使用习惯和当前工作进度。而且.vs目录本身具有临时性,就算删除后也完全不影响解决方案的启动和运行,反正vs也会自动重新生成,只是之前的工作配置及记录没有了,也就是相当于第一次打开这个项目。


这里先随便新建一个ASP.NET MVC项目以作为案例(最好能先生成下),我是用VS2017新建的项目,VS2015应该也是可以,老版本VS则不会出现这个文件夹。打开解决方案所在目录,先查看.vs的内部结构:

.vs目录结构

.vs目录下只有两个文件夹,其中config文件夹里面只保存了一个applicationhost.config文件,这个比较容易理解,就是IIS Express的配置文件,如果项目不是ASP.NET项目则没有这个文件夹,其他的项目类型或多或少也会有类似特定的文件:

applicationhost.config文件

另外一个文件夹名称是根据当前项目的解决方案名称来的,这里因为是随便新建的项目所以名称是WebApplication1(VS中ASP.NET项目默认的命名格式),此文件夹下目前只有一个vs15文件夹,这里要注意15是Visual Studio 2017的版本号,我们平常说的VS2017是产品名称!这点算是老生常谈的知识点了,对应的VS2015版本号为14,以此类推。也就是说如果当前解决方案有用其他版本的VS打开,这里就会生成对应版本的文件夹:

不同版本的所生成的文件夹

继续查看vs15目录,里面分别有.suo文件和一个sqlite3文件夹:

vs15的子目录截图

.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这四张表:

打开storage.ide数据库

PS:截图中的.table命令是查询当前数据库的表,.header on命令是开启列名称,.mode column是设置显示模式为列模式,这里稍微提下,是SQLite命令行工具的语法。

先看下这4张表查询出的数据截图:

DocumentData1表和ProjectData1表查询的数据截图

StringInfo1表查询的数据截图

SolutionData1表的数据比较长会导致排版错乱,特意切换了显示模式:

SolutionData1表查询数据截图

贴下storage.ide里面表的结构截图:

四张表的结构

恩,总体上来说,除了一些blob数据类型(二进制大对象)的字段,其他的要么我看不懂,要么就是和解决方案有关的数据,就是这样,不想继续探索下去了,感觉已经超出我的能力范围了:

装完逼就跑


版权声明:本文由十有三创作,采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请务必署名-保留作者名称及出处:https://shiyousan.com/post/636441130259624698。


  • 上一篇: Visual Studio 2017 如何打开Model Browser(实体数据模型浏览器)
  • 下一篇: Visual Studio中的.suo(Solution User Options)文件

相关文章
  • Visual Studio 2017 如何打开调试的诊断工具
  • Visual Studio中的.suo(Solution User Options)文件
  • 解决VS2013错误:Page '312e8a59-2712-48a1-863e-0ef4e67961fc' not found.
  • 解决VS2015调试无法添加断点并提示断点无效未能绑定的问题
  • TortoiseSVN以标准差异文件显示修改会出现中文乱码
  • 解决.gitignore文件忽略规则无效git依然跟踪修改的问题
发表评论
记住昵称

文章分类

.NET技术 122 数据库 24 Web前端 21 网站建设运维 33 操作系统与应用 67 程序猿日常 11 开发工具 11 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 道学 佛经 服务器 搞笑娱乐 好文分享 软件应用 生活知识 诗词 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • 解决IE11安装升级失败和在安装前需要更新的问题
  • VS重构重命名的快捷键
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • Win10中如何设置Hyper-V的网络让虚拟机也能上外网

推荐文章

  • jquery ajax error函数和及其参数详细说明
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • IIS ARR设置错误引发HTTP 400.605 The request cannot be routed
  • Windows10如何下载OneNote 2016
  • 解决ASP.NET MVC AllowAnonymous属性无效导致无法匿名访问控制器的问题

最新评论

  • 谢谢,用你的方法解决了
  • 能不能帮我一下QQ号是。2946145656
  • 非常感谢~帮大忙了
  • 我的版本没有这个选项,微软太霸道了
  • 我想请问一下,我用的也是iis跟url rewri

友情链接

  • Passingwind的博客
  • 坤哥网
  • 码友网
  • Wil的博客

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号