Chcę usunąć wszystkie foldery bin i obj, aby zmusić wszystkie projekty do odbudowy wszystkiego

Pracuję z wieloma projektami i chcę rekurencyjnie usunąć wszystkie foldery o nazwie ' bin 'lub ' obj'. W ten sposób jestem pewien, że wszystkie projekty będą przebudowywać everyhing (czasami jest to jedyny sposób, aby zmusić visual studio do zapomnienia o poprzednich kompilacjach).

Czy istnieje szybki sposób, aby to osiągnąć (na przykład za pomocą pliku bat) bez konieczności pisania programu. Net?

Author: Svante, 2009-04-16

21 answers

To zależy od powłoki, której chcesz użyć.

Jeśli używasz powłoki cmd w systemie Windows, powinno działać:

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"

Jeśli używasz powłoki typu bash lub zsh (takiej jak git bash lub babun w systemie Windows lub większości powłok Linux / OS X), to jest to o wiele ładniejszy, bardziej zwięzły sposób na zrobienie tego, co chcesz:

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

I można to zredukować do jednego wiersza Z OR:

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

Jeśli używasz Powershell, możesz użyć tego:

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

Jak widać w Robert h ' s answer below - po prostu upewnij się, że dasz mu kredyt na odpowiedź powershell, a nie mnie, jeśli zdecydujesz się na up-vote czegokolwiek :)

Byłoby oczywiście mądre, aby najpierw uruchomić dowolną komendę w bezpiecznym miejscu, aby ją przetestować!

 273
Author: Steve Willcock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 09:59:14

Znalazłem ten wątek i dostałem bingo. Trochę więcej poszukiwań pojawił się skrypt power shell:

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

Pomyślałem, że się podzielę, biorąc pod uwagę, że nie znalazłem odpowiedzi, gdy szukałem tutaj.

 172
Author: Robert H.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-13 16:40:01

To mi pomogło:

for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"

Na podstawie tej odpowiedzi na superuser.com

 61
Author: Daniel Rehner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 10:18:27

Zawsze dodaję nowy cel w moich rozwiązaniach, aby to osiągnąć.

<Target Name="clean_folders">
  <RemoveDir Directories=".\ProjectName\bin" />
  <RemoveDir Directories=".\ProjectName\obj" />
  <RemoveDir Directories="$(ProjectVarName)\bin" />
  <RemoveDir Directories="$(ProjectVarName)\obj" />
</Target>

I możesz wywołać go z linii poleceń

msbuild /t:clean_folders

To może być Twój plik wsadowy.

msbuild /t:clean_folders
PAUSE
 27
Author: Jhonny D. Cano -Leftware-,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-29 00:04:44

Napisałem skrypt powershell aby to zrobić.

Zaletą jest to, że wyświetla podsumowanie usuniętych folderów i ignorowanych, jeśli określiłeś hierarchię podfolderów, które mają być ignorowane.

Przykład wyjściowy

 21
Author: doblak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-03 11:42:35

Nic mi nie wyszło. Musiałem usunąć wszystkie pliki w folderach bin i obj w celu debugowania i Wydania. Moje rozwiązanie:

1.Kliknij prawym przyciskiem myszy projekt, rozładuj, kliknij prawym przyciskiem myszy ponownie edytuj, Przejdź do dołu

2.Insert

<Target Name="DeleteBinObjFolders" BeforeTargets="Clean">
  <RemoveDir Directories="..\..\Publish" />
  <RemoveDir Directories=".\bin" />
  <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>

3. Zapisz, przeładuj Projekt, kliknij prawym przyciskiem myszy clean i presto.

 15
Author: Kdefthog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-05 13:00:25

Coś takiego powinno zrobić to w dość elegancki sposób, po czystym celu:

<Target Name="RemoveObjAndBin" AfterTargets="Clean">
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <RemoveDir Directories="$(TargetDir)" />
</Target>
 11
Author: vezenkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-14 09:32:03

Aby usunąć bin i obj przed zbudowaniem Dodaj do pliku projektu:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

Oto Artykuł: Jak usunąć folder bin i / lub obj przed zbudowaniem lub wdrożeniem

 6
Author: Shaman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-10 17:07:56

Spójrz na CleanProject , usunie foldery bin, foldery obj, foldery TestResults i foldery Resharper. Dostępny jest również kod źródłowy.

 3
Author: habakuk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-06 12:37:01

Czy "czysty" nie jest wystarczająco dobry? Zauważ, że możesz wywołać msbuild za pomocą /t: clean z wiersza poleceń.

 2
Author: Brian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-16 09:39:21

From Using Windows PowerShell to remove obj, bin and ReSharper folders

Bardzo podobny do Robert H odpowiedź z krótszą składnią

  1. Uruchom powershell
  2. cd (zmiana katalogu) do katalogu głównego projektu
  3. Wklej i uruchom skrypt

    Reż.\ - include bin, obj,resharper* - recurse / foreach ($) {rd $_.fullname-Recurse-Force}

 2
Author: Iman Abidi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:42

Oto odpowiedź na podobne pytanie, prosta, łatwa, działa całkiem nieźle i nie wymaga niczego innego niż to, co już masz z Visual Studio.

Jak inni odpowiedzieli już Clean usunie wszystkie artefakty, które są generowane przez kompilację. Ale zostawia wszystko inne.

Jeśli masz jakieś modyfikacje w swoim projekcie MSBuild, może to oznaczać kłopoty i pozostawić po sobie rzeczy, które uważasz, że powinny mieć usunięte.

Możesz obejść ten problem za pomocą prostej zmiany swojego .* proj dodając to gdzieś pod koniec :
<Target Name="SpicNSpan"
        AfterTargets="Clean">
    <RemoveDir Directories="$(OUTDIR)"/>
</Target>

Który usunie wszystko w Twoim folderze bin z bieżącej platformy / konfiguracji.

 2
Author: Newtopian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:42

Bardzo podobne do skryptów PowerShell Steve ' a. Właśnie dodałem do niego TestResults i pakiety, ponieważ jest to potrzebne dla większości projektów.

Get-ChildItem .\ -include bin,obj,packages,TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
 2
Author: Aboo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-13 11:33:25

Na naszym serwerze kompilacyjnym jawnie usuwamy katalogi bin i obj za pomocą skryptów nant.

Każdy skrypt budujący projekt jest odpowiedzialny za jego katalogi output/temp. Tak to działa. Więc kiedy zmieniamy projekt i dodajemy nowy, opieramy skrypt na działającym skrypcie, a Ty zauważasz etap usuwania i dbasz o niego.

Jeśli robisz to na swojej maszynie logic development, trzymałbym się czyszczenia przez Visual Studio, jak inni wspominali.

 1
Author: Simeon Pilgrim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-16 10:16:50

Http://vsclean.codeplex.com/

Narzędzie wiersza poleceń, które znajduje Visual Studio rozwiązań i prowadzi czyste rozkazuj im. Pozwala to na czyszczenie up katalogów /bin / * wszystkich tych stare projekty, na których leżysz twój dysk twardy

 1
Author: Joel Martinez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 15:39:26

Mógłbyś wziąć sugestię PS nieco dalej i utworzyć plik vbs w katalogu projektu w następujący sposób:

Option Explicit
Dim oShell, appCmd
Set oShell  = CreateObject("WScript.Shell")
appCmd      = "powershell -noexit Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse -WhatIf }"
oShell.Run appCmd, 4, false

Dla bezpieczeństwa, dodałem parametr-WhatIf, więc usuń go, jeśli jesteś zadowolony z listy przy pierwszym uruchomieniu.

 1
Author: KL XL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-30 19:52:30

Nienawidzę plików obj zaśmiecających drzewa źródłowe. Zwykle konfiguruję projekty tak, aby wyprowadzały pliki obj poza drzewo źródłowe. Do projektów C# zwykle używam

 <IntermediateOutputPath>..\..\obj\$(AssemblyName)\$(Configuration)\</IntermediateOutputPath>

Dla projektów C++

 IntermediateDirectory="..\..\obj\$(ProjectName)\$(ConfigurationName)"
 0
Author: Juozas Kontvainis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-16 12:56:04

Mamy duży .Pliki SLN z wieloma plikami projektu. Rozpocząłem politykę posiadania katalogu "ViewLocal", w którym znajdują się wszystkie pliki niezwiązane z sourcecontrolled. Wewnątrz tego katalogu znajduje się Katalog "Inter" I "Out". Odpowiednio dla plików pośrednich i plików wyjściowych.

To oczywiście ułatwia przejście do katalogu "viewlocal" i proste usunięcie, aby pozbyć się wszystkiego.

Zanim poświęciłeś czas na wymyślanie sposobu na obejście tego w przypadku skryptów możesz pomyśleć o skonfigurowaniu czegoś podobnego.

Nie będę kłamał, utrzymanie takiej konfiguracji w dużej organizacji udowodniło....interesujące. Zwłaszcza, gdy używasz technologii takich jak QT, które lubią przetwarzać pliki i tworzyć niezarządzane pliki źródłowe. Ale to zupełnie inna historia!

 0
Author: pj4533,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-16 13:20:59

Biorąc pod uwagę, że plik PS1 znajduje się w currentfolderze (folderze, w którym należy usunąć foldery bin i obj)

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

Get-ChildItem $currentFolder -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
 0
Author: ShivanandSK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-16 13:04:14

Jest to mój plik wsadowy, którego używam do rekurencyjnego usuwania wszystkich folderów BIN i OBJ.

  1. Utwórz pusty plik i nazwij go DeleteBinObjFolders.bat
  2. skopiuj i wklej poniższy kod do DeleteBinObjFolders.bat
  3. Przenieś DeleteBinObjFolders.bat plik w tym samym folderze z Twoim rozwiązaniem (*.sln).
@echo off
@echo Deleting all BIN and OBJ folders...
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"
@echo BIN and OBJ folders successfully deleted :) Close the window.
pause > nul
 0
Author: Alper Ebicoglu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-19 06:57:56

Myślę, że możesz kliknąć prawym przyciskiem myszy na swoje rozwiązanie/projekt i kliknąć przycisk "Wyczyść".

o ile pamiętam, to tak działało. Nie mam swojego VS.NET ze mną teraz, więc nie mogę tego przetestować.

 -1
Author: dr. evil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-16 09:40:20