先說一下VS解決方案中bin和obj這兩文件夾是什麼東東,以下信息源自百度。 bin目錄用來保存項目生成後程式集,它有Debug和Release兩個版本,分別對應的文件夾為bin/Debug和bin/Release,這個文件夾是預設的輸出路徑,我們可以通過:項目屬性—>配置屬性—>輸出路徑來修改。 ...
先說一下VS解決方案中bin和obj這兩文件夾是什麼東東,以下信息源自百度。
bin目錄用來保存項目生成後程式集,它有Debug和Release兩個版本,分別對應的文件夾為bin/Debug和bin/Release,這個文件夾是預設的輸出路徑,我們可以通過:項目屬性—>配置屬性—>輸出路徑來修改。
obj目錄是用來保存每個模塊的編譯結果,在.NET中,編譯是分模塊進行的,編譯整個完成後會合併為一個.DLL或.EXE保存到bin目錄下。因為每次編譯時預設都是採用增量編譯,即只重新編譯改變了的模塊,obj保存每個模塊的編譯結果,用來加快編譯速度。是否採用增量編譯,可以通過:項目屬性—>配置屬性—>高級—>增量編譯來設置。
OK,之後我們回歸最中心的思想了,為什麼要刪除掉它們?理由有三:
1、減少空間占用,有利於備份。
2、將源碼上傳至開源網站(諸如codeproject/sourceforge等)所必須的。
3、由觀點1引申的打包後容量小拷貝迅速減少能量消耗節約生命 and so on...
接著就是到達最終目的了,如何刪除它們?方法也有三:
1、人手至每一個項目(網站/程式/類庫)中刪除。(最笨的)
2、使用Windows的搜索功能,搜索解決方案文件夾下的bin和obj進行刪除。(有點想法了)
3、寫一個批處理bat文件,只要雙擊後讓電腦幫忙搞定。(醒目)
本文的要說的方法當然不可能是1、2了,至於說批處理如何寫,如下所示:
rd JT.Common\bin /s/q
rd JT.Common\obj /s/q
rd JT.Control\bin /s/q
rd JT.Control\obj /s/q
免不了要介紹下rd命令了,源自M$:
C:\>rd /?
刪除一個目錄。RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path/S 除目錄本身外,還將刪除指定目錄下的所有子目錄和
文件。用於刪除目錄樹。/Q 安靜模式,帶 /S 刪除目錄樹時不要求確認
我們再回到上面的批處理,細心的人肯定會發現一個問題,如果我的解決方案里有N個項目,我豈不是要寫N*2個rd命令?我有N解決方案,不就要寫N*N*2個rd命令,oh my god!!!
有沒有一個通用的批處理文件,是我可以不用自己再寫額外的命令,一拿來就能用的?答案是有的,要不然也不會有這篇博文了,沒錯,就是它了:
for /f "tokens=*" %%a in ('dir obj /b /ad /s ^|sort') do rd "%%a" /s/q
for /f "tokens=*" %%a in ('dir bin /b /ad /s ^|sort') do rd "%%a" /s/q
最後就是使用方法了,很簡單,把上面的兩條命令寫入一個名為“CleanSolution.bat”的文本文件中,然後扔到解決方案根目錄,也就是與“xxx.sln”同在。
使用時雙擊即可,乾凈清爽。