.lscache 檔是哪冒出來的?要一起 Commit 嗎?
| | | 0 | |
這兩天,我發現 Commit 時 .csproj 會伴隨一個同名 .lscache,疑似是 C# Dev Kit 近期更新加入的新東西。

追了一下,它是 C# Dev Kit 在用的輕量級快取文件,本質是個 TOML 格式文件,包含專案參照、結構等資訊(但不包含環境變數之類的敏感資料)。.lscache 是用來增加 C# Dev Kit 的啟動速度,依據官方說法,.lscache 可縮短 70% 的啟動時間,並能明顯減少記憶體使用。
能改善 VSCode 的 .NET 專案開發體驗當然是好事,但煩人的是它經常變動,成為每次 Commit 的常客,有些礙眼。被納入 Commit 範圍是因為傳統 .gitignores 來不及排除還是刻意為之?答案是後者。理由如下:
- 分支切換時若快取可存在 Repository 一起取回,意味著切換分支後 C# Dev Kit 可立即使用該分支的快取數據,無需從頭開始重新建置。
- 即便快取不是最新版,即然不夠精準仍有參考價值,並會在下次建置時更新。
雖然 C# Dev Kit 團隊建議大家把 .lscache 一起 Commit 到版控,但如果你真的不想,可以手動加入 .gitignores、或是修改 dotnet.projectsystem.cacheInProjectFolder 設定為 false,.lscache 將會改存專案以外的暫存區。但如上面提過的,將 .lscache 排除在版控外,將損失切換分支或跨機器開發時的加速效果。

由 Issue 討論串來看,似乎大家不太能接受 Commit 項目中出現 Cache 性質的檔案,這有違祖訓,打破傳統上對 Cache 的認知,討論區一片反彈。
這個實驗性質的嘗試最終會如何發展呢?我認為大部分開發者寧可浪費一些時間重建快取,也希望保有版控的純淨,Commit 內容就該聚焦在開發成果,只記錄修改異動,不該摻雜與專案本質無關的開發工具加速副產品。
我猜在這場「大型社會實驗」後,C# Dev Kit 應會從善如流,將它排除在 Commit 範圍外。
Comments
Be the first to post a comment