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
數據類型(二進制大對象)的字段,其他的要么我看不懂,要么就是和解決方案有關的數據,就是這樣,不想繼續探索下去了,感覺已經超出我的能力范圍了: