探究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
目錄下只有兩個資料夾,其中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
資料型別(二進位制大物件)的欄位,其他的要麼我看不懂,要麼就是和解決方案有關的資料,就是這樣,不想繼續探索下去了,感覺已經超出我的能力範圍了: