1. 程式人生 > >VS工程的.sdf(.db)和ipch資料夾的處理

VS工程的.sdf(.db)和ipch資料夾的處理

sdf 和 ipch檔案與VS提供的智慧感知、程式碼恢復、團隊本地倉庫功能有關,如果不需要,可以禁止,就不會產生sdf 和 ipch這兩個檔案了,VS重新載入解決方案時速度超快,設定方法如下:(智慧感知指程式碼智慧補全等功能)

工具--》選項--》文字編輯器--》C/C++--》高階,把禁用資料庫設定為true,這樣就不會產生那兩個檔案了。如果需要產生那兩個檔案的可以把禁用資料庫設定為false。

 

在已經生產的工程下,去掉sdf和ipch檔案能正常開啟,設定方法如下:

工具--》選項--》文字編輯器--》C/C++--》高階--》回退位置,把始終使用回退位置設定為true,回退位置已在使用,不警告也設定為true,回退位置設定為專門存放sdf和ipch檔案的檔案目錄。這樣可以刪除程式檔案中的sdf 和 ipch檔案了,當再次開啟程式時VS 重新生成的sdf 和 ipch檔案存放在設定的目錄下了。

 

建議第二種種方法。因為第一種設定後,基本的類檢視是不能使用了。

(sdf檔案現在變為.db檔案)

 

用vs2015建立Visual C++專案,編寫生成後,每次都會生成一個project_name.VC.db檔案,而且會隨著你工程修改執行變的越來越大。

project_name.VC.db是sqlite後端用於intellisense的新資料庫,相當於之前的*.sdf SQL Server Compact資料庫。它與VS2015提供的智慧感知、程式碼恢復、團隊本地倉庫功能有關,VS重新載入解決方案時速度超快。如果不需要,可以禁止,就不會產生該檔案了。

這發生在安裝VS2015 Update 2後。projectname.vc.db檔案是新的IntelliSense資料庫,它替換舊的projname.sdf資料庫。你還可能會看到一個隱藏的projname.vc.vc.opendb檔案,一個鎖檔案,用於指示dbase正在使用。不過你遲早得手動刪除這個檔案。

projectname.vc.db檔案在之前實驗階段就已經可以使用,現在是正式應用。它承諾大約是IntelliSense的x2加速。 這裡最大的變化似乎是轉向另一個dbase引擎,現在使用SQLite而不是SQL Compact。

不要馬上刪除該檔案,否則下一次開啟專案IS將需要一段時間。當你完成了專案,繼續並刪除該檔案,它將不再使用。

但是如果你不想生成該檔案或不需要生成該檔案的話可以通過以下方式取消:

設定方法:工具–》選項–》文字編輯器–》C/C++–》高階,把回退位置和警告設定為true或者禁用資料庫設為true,這樣就不會產生那個檔案了。

 

 

另外還有.aps檔案:

 

.aps檔案記錄了資源資訊,要利用現成的資源,需要修改3個檔案,.rc檔案,Resource.h檔案和.aps檔案,.aps直接刪除後,進入程式,VC會自動生成。

 

 

 

 

 

重新編譯是會重新生成這些檔案的?所以可以定期清理,防止佔用很大空間。

 

VC2010中新建一個專案會同時建立一個特別佔用磁碟空間的ipch目錄與$(SolutionNam).sdf檔案,即使刪掉它,再次開啟工程時還是會重新建立。

方法1:
Tools-> Options->Text Editor->C/C++->Advanced->Disable Database 設定為True,預設為false,同時刪掉工程目錄下的ipch與sdf就不會再產生了。

方法2:
Tools->Options->Text Editor->C/C++->Advanced,在 Fallback Location 的屬性組中,將"Always Use Fallback Location"設定為 true,將"Do Not Warn If Fallback Location Used" 設定為 true ,然後刪除解決方案目錄下的sdf 檔案 ipch 目錄,就不會再產生了。

那麼ipch目錄與$(SolutionNam).sdf檔案到底放置到那兒了?看 "Fallback Location" 屬性說明:這是儲存瀏覽資訊資料庫和 IntelliSense 檔案的第二個位置,如果不指定則放置到臨時目錄中。

我們可以在 "Fallback Location" 屬性中,設定一個固定的路徑來儲存這些檔案,比如D:\VC2010Temp,這樣也比較好管理這些龐大的臃腫的檔案,可以定期清理掉它們,釋放出硬碟空間!
注意:個人建議使用第二種方法,其實這是VC2010的一個新功能,與智慧提示,錯誤提示,程式碼恢復、團隊本地倉庫等等息息相關的東西,使用第一種方法會造成某些功能的失效。