448 Stimmen

Ich möchte alle bin- und obj-Ordner löschen, um alle Projekte dazu zu zwingen, alles neu zu erstellen.

Ich arbeite mit mehreren Projekten und möchte alle Ordner mit dem Namen 'bin' oder 'obj' rekursiv löschen, um sicherzustellen, dass alle Projekte alles neu erstellen (manchmal ist dies der einzige Weg, um Visual Studio dazu zu zwingen, alle vorherigen Builds zu vergessen).

Gibt es einen schnellen Weg, dies zu erreichen (mit einer .bat-Datei zum Beispiel), ohne ein .NET-Programm schreiben zu müssen?

80 Stimmen

Es wäre schön, wenn Build->Clean Solution dies tatsächlich tun würde.

2 Stimmen

Es gibt ein Plugin, das ich gefunden habe namens CleanBinAndObj, das alle bin und obj Ordner löscht. Sehr effektiv für einzelne Lösungen mit vielen Projekten.

16voto

Kdefthog Punkte 161

Nichts hat für mich funktioniert. Ich musste alle Dateien in den bin- und obj-Ordnern für Debug und Release löschen. Meine Lösung:

1. Projekt mit der rechten Maustaste anklicken, entladen, erneut mit der rechten Maustaste bearbeiten, bis nach unten scrollen

2. Einfügen

3. Speichern, Projekt neu laden, mit der rechten Maustaste auf "Clean" klicken und fertig.

13voto

vezenkov Punkte 3649

NB: Dies ist eine alte Antwort und muss möglicherweise für neuere Versionen wie VS 2019 und einige Objektartefakte angepasst werden. Bevor Sie diesen Ansatz verwenden, stellen Sie bitte sicher, dass VS nichts in Ihrem Ziel- und Ausgabeverzeichnis benötigt, um erfolgreich zu kompilieren.

Etwas Ähnliches sollte es auf eine ziemlich elegante Weise tun, nach dem säubern des Ziels:

0 Stimmen

Im VS2019 habe ich festgestellt, dass dies dazu führt, dass die IDE eine Weile hängen bleibt und Probleme mit dem Neuaufbau und project.assets.json hat.

1 Stimmen

Vielen Dank, Mattias, ich habe eine Warnung hinzugefügt. Ich denke, es hängt vom Projekttyp ab und es ist vielleicht keine gute Idee, einige Projekte vollständig zu säubern. Es sollte dafür eine Anpassung geben.

13voto

Vedran Mandić Punkte 642

Ein sehr schneller und schmerzloser Weg ist die Verwendung des rimraf npm-Dienstprogramms. Installieren Sie es zuerst global:

> npm i rimraf -g

Und dann ist der Befehl von Ihrem Projektstammverzeichnis aus ziemlich einfach (der in einer Skriptdatei gespeichert werden kann):

projectRoot> rimraf **/bin **/obj

Um den gewünschten Effekt zu optimieren, können Sie die Projekt-Ereignisziele nutzen (die, die Sie verwenden könnten, ist BeforeRebuild und führen Sie den vorherigen Befehl aus), die in der Dokumentation angegeben sind: https://learn.microsoft.com/en-us/visualstudio/msbuild/how-to-extend-the-visual-studio-build-process?view=vs-2017

Ich mag das rimraf-Dienstprogramm, da es plattformübergreifend und wirklich schnell ist. Aber Sie können auch den RemoveDir-Befehl in der .csproj verwenden, wenn Sie sich für die Zielerungsereignis-Option entscheiden. Der Ansatz mit RemoveDir wurde in einer anderen Antwort hier gut erklärt von @Shaman: https://stackoverflow.com/a/22306653/1534753

1 Stimmen

Arbeiten Sie auch auf dem Mac!

0 Stimmen

Ja (fast?) NodeJS/npm funktioniert überall... haha.

2 Stimmen

IMHO, Wenn Sie an einem Unix-ähnlichen Betriebssystem wie Linux oder macOS arbeiten, benötigen Sie tatsächlich kein rimraf. rm -rf **/bin **/obj wird dasselbe tun. Allerdings ist es wichtig zu beachten, dass wenn Sie Projekte haben, die sich in tieferen Unterverzeichnissen befinden, beide Lösungen die bin/obj Verzeichnisse dieser Projekte nicht löschen werden. Diese Lösung funktioniert also für die meisten Szenarien, aber nicht für alle.

7voto

Aboo Punkte 2214

Ganz ähnlich wie Steves PowerShell-Skripte. Ich habe lediglich Testergebnisse und Pakete hinzugefügt, da sie für die meisten Projekte benötigt werden.

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

7voto

Igor Punkte 3436

Um den bin- und obj-Ordner vor dem Build zu löschen, fügen Sie der Projektdatei Folgendes hinzu:

Hier ist der Artikel: Wie man den bin- und/oder obj-Ordner vor dem Build oder Deploy entfernt

1 Stimmen

Sie werden dies nur bei einem Neuaufbau tun wollen. Es sei denn, Sie wollen, dass jede Version ein Neuaufbau ist!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X