[visual-studio] Voglio eliminare tutte le cartelle bin e obj per forzare tutti i progetti a ricostruire tutto


Answers

Ho trovato questo thread e ho preso il bingo. Un po 'più di ricerca ha trovato questo script di power shell:

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

Ho pensato di condividere, considerando che non ho trovato la risposta quando stavo guardando qui.

Question

Lavoro con più progetti e voglio eliminare in modo ricorsivo tutte le cartelle con il nome 'bin' o 'obj'. In questo modo, sono sicuro che tutti i progetti ricostruiranno ogni cosa (a volte è l'unico modo per forzare lo studio visivo a dimenticare tutto sulle build precedenti).

C'è un modo rapido per farlo (con un file bat per esempio) senza dover scrivere un programma .net?




Niente ha funzionato per me. Avevo bisogno di cancellare tutti i file nelle cartelle bin e obj per il debug e il rilascio. La mia soluzione:

1. Fare clic su progetto, scaricare, fare nuovamente clic con il pulsante destro del mouse su modifica, andare in fondo

2.Insert

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

3. Salvare, ricaricare il progetto, fare clic con il pulsante destro del mouse pulito e presto.




Abbiamo un file .SLN di grandi dimensioni con molti file di progetto. Ho iniziato la politica di avere una directory "ViewLocal" in cui si trovano tutti i file non-sourcecontrollati. Dentro quella directory c'è una directory "Inter" e una "Out". Per i file intermedi e i file di output, rispettivamente.

Questo ovviamente rende semplice andare nella tua directory 'viewlocal' e fare una semplice eliminazione, per sbarazzarsi di tutto.

Prima di dedicare del tempo a trovare un modo per aggirare questo problema con gli script, potresti pensare di creare qualcosa di simile.

Non mentirò però, il mantenimento di una tale organizzazione in una grande organizzazione ha dimostrato ... interessante. Soprattutto quando si utilizzano tecnologie come QT che amano elaborare file e creare file sorgente non-sourcecontrollati. Ma questa è tutta un'altra storia!




Questo è il mio file batch che uso per cancellare ricorsivamente tutte le cartelle BIN e OBJ.

  1. Crea un file vuoto e chiamalo DeleteBinObjFolders.bat
  2. Copia e incolla il codice seguente nel DeleteBinObjFolders.bat
  3. Spostare il file DeleteBinObjFolders.bat nella stessa cartella con il file solution (* .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



In realtà potresti prendere il suggerimento PS un po 'oltre e creare un file vbs nella directory del progetto in questo modo:

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

Per sicurezza, ho incluso: "Che parametro, quindi rimuovilo se sei soddisfatto dell'elenco alla prima esecuzione.




Uso sempre per aggiungere un nuovo obiettivo alle mie soluzioni per raggiungere questo obiettivo.

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

E puoi chiamarlo dalla riga di comando

msbuild /t:clean_folders

Questo può essere il tuo file batch.

msbuild /t:clean_folders
PAUSE



CleanProject un'occhiata a CleanProject , eliminerà cartelle bin, cartelle obj, cartelle TestResults e cartelle Resharper. Il codice sorgente è anche disponibile.







Sul nostro server di build, cancelliamo esplicitamente le directory bin e obj, tramite gli script nant.

Ogni script di costruzione del progetto è responsabile delle sue directory di output / temp. Funziona bene in questo modo. Quindi, quando cambiamo un progetto e ne aggiungiamo uno nuovo, basiamo lo script su uno script funzionante, e notiamo la fase di eliminazione e ci prendiamo cura di esso.

Se lo fai sul tuo computer di sviluppo logico, mi limiterò a pulire tramite Visual Studio come altri hanno menzionato.




Ecco la risposta che ho dato a una domanda simile: semplice, facile, funziona piuttosto bene e non richiede nient'altro che ciò che hai già con Visual Studio.

Come altri hanno già risposto, Clean rimuoverà tutti gli artefatti generati dalla build. Ma lascerà tutto il resto.

Se si dispone di alcune personalizzazioni nel progetto MSBuild, ciò potrebbe significare problemi e lasciare materiale che si penserebbe avrebbe dovuto eliminare.

Puoi aggirare questo problema con una semplice modifica al tuo. * Pro aggiungendolo da qualche parte vicino alla fine:

<Target Name="SpicNSpan"
        AfterTargets="Clean">
    <RemoveDir Directories="$(OUTDIR)"/>
</Target>

Che rimuoverà tutto nella cartella bin della piattaforma / configurazione corrente.




Related