https://shiyousan.com/post/636441130259624698

在某个契机的引发下,对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数据类型(二进制大对象)的字段,其他的要么我看不懂,要么就是和解决方案有关的数据,就是这样,不想继续探索下去了,感觉已经超出我的能力范围了:

探究Visual Studio生成的.vs文件夹内部结构和作用的更多相关文章

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

    这里直接先将我摸索出的结果贴出来,文章后面会一一详细说明和分析:.vs目录是用来存储当前用户在解决方案中的工作配置,具体包括VS关闭前最后的窗口布局.最后打开的选项卡/操作记录/文件文档.某些自定义配 ...

  2. 关于Visual Studio中的TraceDebugging文件夹

    最近一段时间发现C盘莫名其妙的变小了,各种清理各种卸载还是没用,电脑慢的是在无法使用 .最后只能一个文件夹一个文件夹的找,最后针对“C:\Documents and Settings\All User ...

  3. 在visual studio code和visual studio中编写TypeScript文件自动生成JavaScript文件

    注:此处的自动生成都为保存ts文件时自动生成js文件 VS CODE 只需要在TypeScript的终端控制台中输入如下命令即可,并注意需要将其中的*换成对应的文件名,此处的*似乎不能作为通用匹配. ...

  4. DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解

    关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  5. Visual Studio新的 .csporj 文件

    Visual Studio新的 .csporj 文件非常方便,虽然目前还不支持WPF.WinForm等工程,但应用到控制台程序,类库还是没有任何问题的.只需要简单的用如下内容替换老的csproj即可: ...

  6. Visual Studio 生成事件命令

    Visual Studio在生成项目工程前后,有时我们需要做一些特殊的操作,比如:拷贝生成的dll到指定目标下面等. 结合VS可以添加预先生成事件和后期生成事件,采用命令或bat批处理. 1.Visu ...

  7. Visual Studio 提示某个dll文件(已在Microsoft Visual Studio 外对该文件进行了修改,是否重新加载它)

    如题: Visual Studio 提示某个dll文件(已在Microsoft Visual Studio 外对该文件进行了修改,是否重新加载它) 如果选择“是”,那恭喜你,第二次生成的时候,引用这个 ...

  8. Visual Studio 2017创建XAML文件

    Visual Studio 2017创建XAML文件   在Visual Stuido 2015中,在已经创建好的项目中添加XAML文件,只要右击项目,单击“添加”|“新建项”命令,然后从“添加新项” ...

  9. Visual Studio各版本工程文件之间的转换 [转载]

    原网址:http://www.cnblogs.com/jmliao/p/5594179.html Visual Studio各版本工程文件之间的转换   由于VS版本比较多,低版本无法直接打开高版本的 ...

随机推荐

  1. CNDS账号密码

    您购买的CSDN 100下载积分 发货如下:CSDN账号:masunwei0961CSDN密码:sangsang3邮箱:lao42981894zh@163.com邮箱密码:songsong3

  2. WinForm窗体继承

    在Windows应用程序中,从现有的窗体继承,查看子窗体的设计视图时,会出现错误: 服务容器中已存在服务 System.Windows.Forms.Design.IEventHandlerServic ...

  3. OSPF建立邻居、邻接关系 学习笔记

    Ospf中路由器之间存在两种连接关系:邻居关系和邻接关系.本博文将详细介绍这2种关系建立及工作原理. 如果两台路由器之间共享一条公共数据链路(两台路由器中间没有其它路由器,或者两台路由器之间存在虚连接 ...

  4. USB2.0学习笔记连载(五):EZ-USB重要寄存器的配置

    本篇博客主要讲解EZ-USB一些重要寄存器的配置,首先对于本篇博客所讲的内容,读者应该到官网上去下载相关的手册,其中包括<EZ-USB Technical Reference Manual> ...

  5. Self20171218_Eclipse+TestNg HelloWorld

    作为一个经典的入门例子,这里展示如何开始使用TestNG单元测试框架. 使用的工具 : TestNG 6.8.7 Maven 3 Eclipse IDE TestNG下载并安装 从这里 http:// ...

  6. Google ProtocolBuffers2.4.1应用说明(一)

    1.概念 Protocol buffers是一个用来序列化结构化数据的技术,支持多种语言诸如C++.Java以及Python语言,可以使用该技术来持久化数据或者序列化成网络传输的数据.相比较一些其他的 ...

  7. Simsimi 小黄鸡机器人最新无限制接口api simsimi机器人接口api 微信公众号

    一.什么是Simsimi? simsimi公司是提供智能服务,其中一个服务是simsimi聊天机器人服务,每天有超过百万的用户聊天,国内最大的搜索引擎——百度的产品siri使用的就是simsimi提供 ...

  8. 第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页

    第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页 分页可以用一个第三方分页模块django-pure-pagination 下载地址:https://github.c ...

  9. e866. 确定可用外观

    UIManager.LookAndFeelInfo[] info = UIManager.getInstalledLookAndFeels(); for (int i=0; i<info.len ...

  10. e856. 列出一个组件的所有事件

    This example demonstrates how to list all the actions in a component. ActionMap map = component.getA ...