Saya bekerja dengan banyak proyek, dan saya ingin menghapus semua folder secara rekursif dengan nama 'bin' atau 'obj' dengan cara itu saya yakin bahwa semua proyek akan membangun kembali semuanya (kadang-kadang itu satu-satunya cara untuk memaksa Visual Studio melupakan semua tentang sebelumnya membangun).
Apakah ada cara cepat untuk menyelesaikan ini (dengan file .bat misalnya) tanpa harus menulis program .NET?
visual-studio
visual-studio-2008
batch-file
cmd
MichaelD
sumber
sumber
Jawaban:
Ini tergantung pada shell yang Anda inginkan.
Jika Anda menggunakan cmd shell pada Windows maka yang berikut ini akan berfungsi:
Jika Anda menggunakan shell tipe bash atau zsh (seperti git bash atau babun di Windows atau kebanyakan shell Linux / OS X) maka ini adalah cara yang jauh lebih baik, lebih ringkas untuk melakukan apa yang Anda inginkan:
dan ini dapat dikurangi menjadi satu baris dengan ATAU:
Perhatikan bahwa jika direktori nama file Anda berisi spasi atau tanda kutip, find akan mengirim entri tersebut apa adanya, xargs mana yang dapat dibagi menjadi beberapa entri. Jika shell Anda mendukungnya,
-print0
dan-0
akan mengatasi kekurangan ini, maka contoh di atas menjadi:dan:
Jika Anda menggunakan Powershell maka Anda dapat menggunakan ini:
seperti yang terlihat pada jawaban Robert H di bawah ini - pastikan Anda memberinya pujian untuk jawaban PowerShell daripada saya jika Anda memilih untuk memilih-up apa saja :)
Tentu saja akan bijaksana untuk menjalankan perintah apa pun yang Anda pilih di tempat yang aman terlebih dahulu untuk mengujinya!
sumber
Saya menemukan utas ini dan mendapat bingo. Pencarian lebih banyak muncul skrip shell daya ini:
Saya pikir saya akan berbagi, mengingat saya tidak menemukan jawaban ketika saya mencari di sini.
sumber
gci -include bin,obj -recurse | remove-item -force -recurse
)-WhatIf
bendera untuk menguji pertama, jadi saya berakhir dengan ini:$foldersToRemove='bin','obj';[string[]]$foldersToIgnore='ThirdParty';Get-ChildItem .\ -Include $foldersToRemove -Recurse|Where-Object{$_.FullName -inotmatch "\\$($foldersToIgnore -join '|')\\"}|Remove-Item -Force -Recurse -WhatIf
(agak berantakan di sini sebagai satu baris meskipun :))Ini bekerja untuk saya:
Berdasarkan jawaban ini di superuser.com
sumber
Saya selalu menambahkan target baru pada solusi saya untuk mencapai ini.
Dan Anda dapat memanggilnya dari baris perintah
Ini bisa menjadi file batch Anda.
sumber
Saya menulis skrip PowerShell untuk melakukannya.
Keuntungannya adalah ia mencetak ringkasan folder yang dihapus, dan folder yang diabaikan jika Anda menentukan hierarki subfolder yang akan diabaikan.
sumber
$_ -notmatch 'node_modules'
kondisi ke$FoldersToRemove
definisi variabelTidak ada yang berhasil untuk saya. Saya perlu menghapus semua file di folder bin dan obj untuk debug dan rilis. Solusi saya:
1. Klik kanan proyek, bongkar, klik kanan lagi edit, pergi ke bawah
2.Masukkan
3. Simpan, muat ulang proyek, klik kanan clean and presto.
sumber
Sesuatu seperti itu harus melakukannya dengan cara yang cukup elegan, setelah target bersih:
sumber
Untuk menghapus nampan dan objek sebelum membangun, tambahkan ke file proyek:
Inilah artikelnya: Cara menghapus folder bin dan / atau obj sebelum build atau deploy
sumber
Sangat mirip dengan skrip PowerShell Steve. Saya baru saja menambahkan TestResults dan paket ke sana karena diperlukan untuk sebagian besar proyek.
sumber
Silakan lihat di CleanProject , itu akan menghapus folder bin, folder obj, folder TestResults dan folder Resharper. Kode sumber juga tersedia.
sumber
dari Menggunakan Windows PowerShell untuk menghapus folder obj, bin dan ReSharper
sangat mirip dengan jawaban Robert H dengan sintaks yang lebih pendek
rekatkan dan jalankan skrip di bawah ini
dir. \ -sertakan bin, obj, resharper * -recurse | foreach ($ ) {rd $ _. nama lengkap –Recurse –Force}
sumber
Cara yang sangat cepat dan tidak menyakitkan adalah dengan menggunakan
rimraf
utilitas npm, instal secara global terlebih dahulu:Dan kemudian perintah dari root proyek Anda cukup sederhana (yang dapat disimpan ke file skrip):
Untuk mengoptimalkan efek yang diinginkan, Anda dapat memanfaatkan target acara proyek (yang dapat Anda gunakan adalah
BeforeRebuild
dan membuatnya menjalankan perintah sebelumnya) yang ditentukan dalam dokumen: https://docs.microsoft.com/en-us/visualstudio/ msbuild / bagaimana-untuk-memperpanjang-visual-studio-build-proses? view = vs-2017Saya suka utilitas rimraf karena crossplat dan sangat cepat. Tapi, Anda juga dapat menggunakan
RemoveDir
perintah di .csproj jika Anda memutuskan untuk pergi dengan opsi acara target. TheRemoveDir
Pendekatan baik dijelaskan dalam jawaban lain di sini oleh @Shaman: https://stackoverflow.com/a/22306653/1534753sumber
Berikut adalah jawaban yang saya berikan untuk pertanyaan serupa, Sederhana, mudah, berfungsi cukup baik dan tidak memerlukan apa pun selain apa yang sudah Anda miliki dengan Visual Studio.
Ketika orang lain merespons, Bersihkan akan menghapus semua artefak yang dihasilkan oleh build. Tapi itu akan meninggalkan segalanya.
Jika Anda memiliki beberapa penyesuaian dalam proyek MSBuild Anda, ini bisa mengeja masalah dan meninggalkan hal-hal yang menurut Anda harus dihapus.
Anda dapat menghindari masalah ini dengan perubahan sederhana pada proj. * Anda dengan menambahkan ini di akhir:
Yang akan menghapus semua yang ada di folder bin Anda dari platform / konfigurasi saat ini.
sumber
Ini adalah file batch saya yang saya gunakan untuk menghapus semua folder BIN dan OBJ secara rekursif.
sumber
Apakah 'bersih' tidak cukup baik? Perhatikan bahwa Anda dapat memanggil msbuild dengan / t: clean dari baris perintah.
sumber
Di server build kami, kami secara eksplisit menghapus direktori bin dan obj, melalui skrip nant.
Setiap skrip build proyek bertanggung jawab atas direktori output / temp itu. Bekerja dengan baik seperti itu. Jadi, ketika kami mengubah proyek dan menambahkan yang baru, kami mendasarkan skrip tersebut dari skrip yang berfungsi, dan Anda memperhatikan tahap hapus dan menanganinya.
Jika Anda melakukannya pada mesin pengembangan logika Anda, saya akan tetap bersih melalui Visual Studio seperti yang orang lain katakan.
sumber
Aku sebenarnya benci file obj yang mengotori pohon sumber. Saya biasanya mengatur proyek sehingga mereka mengeluarkan file obj di luar source tree. Untuk proyek C # biasanya saya gunakan
Untuk proyek C ++
sumber
http://vsclean.codeplex.com/
sumber
Anda sebenarnya dapat mengambil saran PS sedikit lebih jauh dan membuat file vbs di direktori proyek seperti ini:
Demi keamanan, saya telah memasukkan parameter -WhatIf, jadi hapus jika Anda puas dengan daftar tersebut saat pertama kali dijalankan.
sumber
Saya menggunakan sedikit modifikasi dari Robert H yang melewatkan kesalahan dan mencetak file hapus. Saya biasanya juga menghapus
.vs
,_resharper
danpackage
folder:Juga patut dicatat adalah
git
perintah yang menghapus semua perubahan termasuk file dan direktori yang diabaikan:sumber
Kami memiliki file .SLN besar dengan banyak file proyek. Saya memulai kebijakan memiliki direktori "ViewLocal" di mana semua file yang tidak dikontrol dapat ditemukan. Di dalam direktori itu ada direktori 'Inter' dan 'Out'. Untuk file perantara, dan file output, masing-masing.
Ini jelas membuatnya mudah untuk hanya pergi ke direktori 'viewlocal' Anda dan melakukan penghapusan sederhana, untuk menyingkirkan semuanya.
Sebelum Anda menghabiskan waktu mencari cara untuk mengatasi ini dengan skrip, Anda mungkin berpikir untuk menyiapkan sesuatu yang serupa.
Saya tidak akan berbohong, mempertahankan pengaturan seperti itu dalam organisasi besar telah terbukti .... menarik. Terutama ketika Anda menggunakan teknologi seperti QT yang suka memproses file dan membuat file sumber yang tidak terkontrol. Tapi itu adalah keseluruhan cerita LAINNYA!
sumber
Mempertimbangkan file PS1 hadir di folder saat ini (folder di mana Anda perlu menghapus folder bin dan obj)
sumber
Untuk solusi dalam batch. Saya menggunakan perintah berikut:
FOR /D /R %%G in (obj,bin) DO @IF EXIST %%G IF %%~aG geq d RMDIR /S /Q "%%G"
Alasan tidak menggunakan
DIR /S /AD /B xxx
1.
DIR /S /AD /B obj
akan mengembalikan daftar kosong (setidaknya pada Windows10 saya) 2. akan berisi hasil yang tidak diharapkan (folder tobj)DIR /S /AD /B *obj
sumber
@IF EXIST %%G IF %%~aG geq d
digunakan untuk memeriksa jalur yang ada dan path adalah folder bukan file.Ini Bekerja Baik Untuk Saya: mulai untuk / d / r. %% d in (bin, obj, ClientBin, Generated_Code) do @jika ada "%% d" rd / s / q "%% d"
sumber
Saya menggunakan file .bat dengan commad ini untuk melakukan itu.
sumber
Saya pikir Anda dapat mengklik kanan ke solusi / proyek Anda dan klik tombol "Bersihkan".
Sejauh yang saya ingat itu berfungsi seperti itu. Saya tidak punya VS.NET dengan saya sekarang jadi tidak bisa mengujinya.
sumber