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.

1voto

Simeon Pilgrim Punkte 16385

Auf unserem Build-Server löschen wir explizit die bin- und obj-Verzeichnisse über Nant-Skripte.

Jedes Projekt-Build-Skript ist für seine Ausgabe-/Temp-Verzeichnisse verantwortlich. Das funktioniert gut auf diese Weise. Wenn wir also ein Projekt ändern und ein neues hinzufügen, basieren wir das Skript auf einem funktionierenden Skript und du bemerkst die Löschphase und kümmern dich darum.

Wenn du es auf deiner Logik-Entwicklungs-Maschine machst, würde ich beim Bereinigen über Visual Studio bleiben, wie es bereits von anderen erwähnt wurde.

0 Stimmen

Manchmal muss ich einfach sicher sein, dass alle Builds komplett neu sind. Ich kann einer sauberen Lösung nicht vertrauen, das zu tun. Das Löschen von bin und obj hat sich oft als zuverlässiger erwiesen.

0 Stimmen

Für uns werden nur Builds aus der 'Build-Maschine' getestet oder in der Produktion verwendet, damit die Entwickler keine "sauber sein müssen" Probleme haben und der Build-Server das erledigt. Das bedeutet auch, dass kein Entwickler erforderlich ist, um einen vollständigen Build durchzuführen.

1 Stimmen

Was ist der einfachste Weg, dies mit Nant zu tun? Ich habe eine Hierarchie von ein paar Dutzend Projekten und möchte lieber keinen Löschbefehl falsch ausführen. =)

0voto

Brian Punkte 115257

Ist 'clean' nicht gut genug? Beachten Sie, dass Sie msbuild mit /t:clean von der Befehlszeile aus aufrufen können.

14 Stimmen

Tatsächlich reicht "sauber" nicht aus. Dies trifft besonders zu, wenn MEF verwendet wird. "Sauber Lösung" entfernt nicht die Referenzen, die Sie entfernt haben, was Probleme verursachen kann, wenn DLLs eines Ordners dynamisch geladen werden.

8 Stimmen

Viele "funktioniert bei mir" Fehler werden verursacht durch alte oder unerwartete Daten, die in den bin/obj Ordnern herumliegen und nicht entfernt werden, wenn man einen "Clean" durchführt.

0voto

ShivanandSK Punkte 639

Angesichts der Tatsache, dass die PS1-Datei im aktuellen Ordner vorhanden ist (dem Ordner, in dem Sie die bin- und obj-Ordner löschen müssen)

$currentPath = $MyInvocation.MyCommand.Path
$currentFolder = Split-Path $currentPath

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

0voto

xianyi Punkte 31

Für die Lösung im Batch. Ich verwende den folgenden Befehl:

FÜR /D /R %%G in (obj,bin) DO @IF EXIST %%G IF %%~aG geq d RMDIR /S /Q "%%G"


Der Grund, warum nicht DIR /S /AD /B xxx verwendet wird
1. DIR /S /AD /B obj gibt eine leere Liste zurück (zumindest bei meinem Windows10) Bildbeschreibung hier eingeben
2. DIR /S /AD /B *obj enthält das unerwartete Ergebnis (tobj-Ordner) Bildbeschreibung hier eingeben

0 Stimmen

@if exist %%G if %%~aG geq d wird verwendet, um zu überprüfen, ob ein Pfad existiert und der Pfad ein Ordner und kein Datei ist.

0voto

pj4533 Punkte 1671

Wir haben eine große .SLN-Dateien mit vielen Projektdateien. Ich habe die Richtlinie eingeführt, ein "ViewLocal"-Verzeichnis zu haben, in dem sich alle nicht quellkontrollierten Dateien befinden. Innerhalb dieses Verzeichnisses befindet sich ein 'Inter'- und ein 'Out'-Verzeichnis. Für die Zwischendateien und die Ausgabedateien, jeweils.

Das macht es natürlich einfach, einfach zu Ihrem 'viewlocal'-Verzeichnis zu gehen und einfach zu löschen, um alles loszuwerden.

Bevor Sie Zeit damit verbringen, einen Weg zu finden, dies mit Skripten zu umgehen, sollten Sie überlegen, etwas Ähnliches einzurichten.

Ich werde nicht lügen, die Aufrechterhaltung einer solchen Einrichtung in einer großen Organisation hat sich als interessant erwiesen. Besonders wenn Sie Technologien wie QT verwenden, die Dateien verarbeiten und nicht quellkontrollierte Quelldateien erstellen. Aber das ist eine ganz ANDERE Geschichte!

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