1. ホーム
  2. visual-studio

[解決済み] すべてのbinとobjフォルダを削除して、すべてのプロジェクトを強制的にリビルドさせたい

2022-03-16 13:53:48

質問

私は複数のプロジェクトで作業していますが、すべてのプロジェクトがすべてを再構築することを確実にするために、「bin」または「obj」という名前のすべてのフォルダを再帰的に削除したいです(時には、Visual Studioが以前のビルドについてすべてを忘れるように強制する唯一の方法です)。

.NETプログラムを書かずに、(例えば.batファイルで)これを達成する簡単な方法はありますか?

どのように解決するのですか?

これは、使用するシェルに依存します。

Windowsでcmdシェルを使用している場合は、以下のようにすればよいでしょう。

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S bin') DO RMDIR /S /Q "%%G"
FOR /F "tokens=*" %%G IN ('DIR /B /AD /S obj') DO RMDIR /S /Q "%%G"

bashやzshタイプのシェル(Windowsのgit bashやbabun、ほとんどのLinux/OS Xのシェルなど)を使っている場合は、こちらの方がより簡潔で素敵な方法で、やりたいことを実行できます。

find . -iname "bin" | xargs rm -rf
find . -iname "obj" | xargs rm -rf

で、これはORで1行に減らすことができます。

find . -iname "bin" -o -iname "obj" | xargs rm -rf

ファイル名のディレクトリにスペースや引用符が含まれている場合、findはそれらのエントリをそのまま送信し、xargsは複数のエントリに分割する可能性があることに注意してください。あなたのシェルがそれらをサポートしているならば -print0-0 はこの欠点を回避するため、上記の例のようになります。

find . -iname "bin" -print0 | xargs -0 rm -rf
find . -iname "obj" -print0 | xargs -0 rm -rf

とします。

find . -iname "bin" -o -iname "obj" -print0 | xargs -0 rm -rf

Powershellを使用している場合は、これを使用することができます。

Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }

に見られるように 以下、Robert Hさんの回答 - もし何かアップヴォートする場合は、私ではなく、彼のパワーシェルによる回答を評価してください :)

もちろん、どのようなコマンドを選択するにしても、まずは安全な場所で実行してテストするのが賢明でしょう。