探究Visual Studio生成的.vs文件夾內部結構和作用


https://shiyousan.com/post/636441130259624698

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

裝完逼就跑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM