Je travaille avec plusieurs projets et je veux supprimer récursivement tous les dossiers portant le nom «bin» ou «obj» de cette façon, je suis sûr que tous les projets reconstruiront tout (parfois c'est le seul moyen de forcer Visual Studio à tout oublier sur les précédents) builds).
Existe-t-il un moyen rapide d'accomplir cela (avec un fichier .bat par exemple) sans avoir à écrire un programme .NET?
Réponses:
Cela dépend du shell que vous préférez utiliser.
Si vous utilisez le shell cmd sous Windows, les éléments suivants devraient fonctionner:
Si vous utilisez un shell de type bash ou zsh (comme git bash ou babun sous Windows ou la plupart des shells Linux / OS X), c'est une manière beaucoup plus agréable et plus succincte de faire ce que vous voulez:
et cela peut être réduit à une ligne avec un OU:
Notez que si vos répertoires de noms de fichiers contiennent des espaces ou des guillemets, find enverra ces entrées telles quelles, que les xargs peuvent diviser en plusieurs entrées. Si votre shell les prend en charge
-print0
et-0
contournera cette lacune, les exemples ci-dessus deviennent:et:
Si vous utilisez Powershell, vous pouvez utiliser ceci:
comme on le voit dans la réponse de Robert H ci - dessous - assurez-vous de lui donner le crédit pour la réponse PowerShell plutôt que moi si vous choisissez de voter pour quelque chose :)
Il serait bien sûr judicieux d'exécuter la commande que vous choisissez dans un endroit sûr pour la tester!
la source
J'ai trouvé ce fil et obtenu le bingo. Un peu plus de recherche a révélé ce script Power Shell:
J'ai pensé partager, considérant que je n'ai pas trouvé la réponse quand je regardais ici.
la source
gci -include bin,obj -recurse | remove-item -force -recurse
)-WhatIf
drapeau teste d'abord, alors je me suis retrouvé avec ceci:$foldersToRemove='bin','obj';[string[]]$foldersToIgnore='ThirdParty';Get-ChildItem .\ -Include $foldersToRemove -Recurse|Where-Object{$_.FullName -inotmatch "\\$($foldersToIgnore -join '|')\\"}|Remove-Item -Force -Recurse -WhatIf
(un peu compliqué ici en une seule ligne :))Cela a fonctionné pour moi:
Basé sur cette réponse sur superuser.com
la source
J'utilise pour toujours ajouter un nouvel objectif sur mes solutions pour y parvenir.
Et vous pouvez l'appeler à partir de la ligne de commande
Cela peut être votre fichier batch.
la source
J'ai écrit un script PowerShell pour le faire.
L'avantage est qu'il imprime un résumé des dossiers supprimés et des dossiers ignorés si vous avez spécifié une hiérarchie de sous-dossiers à ignorer.
la source
$_ -notmatch 'node_modules'
condition à la$FoldersToRemove
définition de variableRien n'a fonctionné pour moi. J'avais besoin de supprimer tous les fichiers des dossiers bin et obj pour le débogage et la publication. Ma solution:
1.Cliquez avec le bouton droit sur le projet, déchargez, cliquez de nouveau avec le bouton droit de la souris, allez en bas
2. insérez
3. Enregistrez, rechargez le projet, cliquez avec le bouton droit sur Clean et presto.
la source
Quelque chose comme ça devrait le faire d'une manière assez élégante, après une cible propre:
la source
Pour supprimer bin et obj avant la construction, ajoutez au fichier de projet:
Voici l'article: Comment supprimer le dossier bin et / ou obj avant la génération ou le déploiement
la source
Très similaire aux scripts PowerShell de Steve. Je viens d'y ajouter TestResults et des packages car cela est nécessaire pour la plupart des projets.
la source
Jetez un œil au CleanProject , il supprimera les dossiers bin, les dossiers obj, les dossiers TestResults et les dossiers Resharper. Le code source est également disponible.
la source
à partir de Windows PowerShell pour supprimer les dossiers obj, bin et ReSharper
très similaire à la réponse de Robert H avec une syntaxe plus courte
coller et exécuter le script ci-dessous
dir. \ -include bin, obj, resharper * -recurse | foreach ($ ) {rd $ _. fullname –Recurse –Force}
la source
Un moyen très rapide et indolore consiste à utiliser l'
rimraf
utilitaire npm, à l'installer globalement en premier:Et puis la commande de la racine de votre projet est assez simple (qui peut être enregistrée dans un fichier de script):
Pour optimiser l'effet souhaité, vous pouvez tirer parti des cibles d'événements du projet (celle que vous pouvez utiliser est
BeforeRebuild
et lui faire exécuter la commande précédente) qui sont spécifiées dans les documents: https://docs.microsoft.com/en-us/visualstudio/ msbuild / comment-étendre-le-processus-de-construction-de-visual-studio? view = vs-2017J'aime l'utilitaire rimraf car il est crossplat et très rapide. Mais, vous pouvez également utiliser la
RemoveDir
commande dans le .csproj si vous décidez d'utiliser l'option d'événement cible. L'RemoveDir
approche a été bien expliquée dans une autre réponse ici par @Shaman: https://stackoverflow.com/a/22306653/1534753la source
Voici la réponse que j'ai donnée à une question similaire, Simple, facile, fonctionne assez bien et ne nécessite rien d'autre que ce que vous avez déjà avec Visual Studio.
Comme d'autres ont déjà répondu, Clean supprimera tous les artefacts générés par la génération. Mais cela laissera tout le reste.
Si vous avez des personnalisations dans votre projet MSBuild, cela pourrait causer des problèmes et laisser des éléments que vous penseriez qu'il aurait dû supprimer.
Vous pouvez contourner ce problème en modifiant simplement votre projet. * En ajoutant ceci quelque part vers la fin:
Ce qui supprimera tout dans votre dossier bin de la plate-forme / configuration actuelle.
la source
Il s'agit de mon fichier de commandes que j'utilise pour supprimer tous les dossiers BIN et OBJ de manière récursive.
la source
«Propre» n'est-il pas assez bon? Notez que vous pouvez appeler msbuild avec / t: clean à partir de la ligne de commande.
la source
Sur notre serveur de build, nous supprimons explicitement les répertoires bin et obj, via des scripts nant.
Chaque script de construction de projet est responsable de ses répertoires de sortie / temp. Fonctionne bien de cette façon. Ainsi, lorsque nous modifions un projet et en ajoutons un nouveau, nous basons le script sur un script de travail, et vous remarquez l'étape de suppression et vous en occupez.
Si vous le faites sur votre machine de développement logique, je m'en tiendrai au nettoyage via Visual Studio comme d'autres l'ont mentionné.
la source
Je déteste en fait les fichiers obj qui jonchent les arbres sources. J'ai l'habitude de configurer des projets pour qu'ils produisent des fichiers obj en dehors de l'arborescence source. Pour les projets C # que j'utilise habituellement
Pour les projets C ++
la source
http://vsclean.codeplex.com/
la source
Vous pouvez en fait pousser la suggestion PS un peu plus loin et créer un fichier vbs dans le répertoire du projet comme ceci:
Pour des raisons de sécurité, j'ai inclus le paramètre -WhatIf, donc supprimez-le si vous êtes satisfait de la liste lors de la première exécution.
la source
J'utilise une légère modification de Robert H qui saute les erreurs et imprime les fichiers supprimés. Je usally aussi clair que les
.vs
,_resharper
et lespackage
dossiers:Il convient également de noter la
git
commande qui efface toutes les modifications, y compris les fichiers et répertoires ignorés:la source
Nous avons un gros fichier .SLN avec de nombreux fichiers de projet. J'ai commencé la politique d'avoir un répertoire "ViewLocal" où se trouvent tous les fichiers non contrôlés par la source. À l'intérieur de ce répertoire se trouve un répertoire «Inter» et «Out». Pour les fichiers intermédiaires et les fichiers de sortie, respectivement.
Évidemment, il est facile d'aller simplement dans votre répertoire 'viewlocal' et de faire une simple suppression, pour vous débarrasser de tout.
Avant de passer du temps à trouver un moyen de contourner ce problème avec les scripts, vous pourriez penser à configurer quelque chose de similaire.
Je ne mentirai pas cependant, le maintien d'une telle configuration dans une grande organisation s'est révélé ... intéressant. Surtout lorsque vous utilisez des technologies telles que QT qui aiment traiter des fichiers et créer des fichiers source non contrôlés par des sources. Mais c'est toute une AUTRE histoire!
la source
Considérant que le fichier PS1 est présent dans le dossier actuel (le dossier dans lequel vous devez supprimer les dossiers bin et obj)
la source
Pour la solution en batch. J'utilise la commande suivante:
FOR /D /R %%G in (obj,bin) DO @IF EXIST %%G IF %%~aG geq d RMDIR /S /Q "%%G"
La raison de ne pas utiliser
DIR /S /AD /B xxx
1.
DIR /S /AD /B obj
retournera une liste vide (au moins sur mon Windows10) 2. contiendra le résultat qui n'est pas attendu (dossier tobj)DIR /S /AD /B *obj
la source
@IF EXIST %%G IF %%~aG geq d
est utilisé pour vérifier le chemin existant et le chemin est un dossier et non un fichier.Cela fonctionne bien pour moi: commencez pour / d / r. %% d dans (bin, obj, ClientBin, Generated_Code) existe-t-il si "%% d" rd / s / q "%% d"
la source
J'utilise le fichier .bat avec cette commande pour ce faire.
la source
Je pense que vous pouvez cliquer avec le bouton droit sur votre solution / projet et cliquer sur le bouton "Nettoyer".
Pour autant que je m'en souvienne, ça fonctionnait comme ça. Je n'ai pas mon VS.NET avec moi maintenant, je ne peux donc pas le tester.
la source