Я работаю с несколькими проектами и хочу рекурсивно удалить все папки с именем «bin» или «obj» таким образом, я уверен, что все проекты будут перестраивать все (иногда это единственный способ заставить Visual Studio забыть все о предыдущих строит).
Есть ли быстрый способ сделать это (например, с помощью файла .bat) без необходимости писать программу .NET?
visual-studio
visual-studio-2008
batch-file
cmd
MichaelD
источник
источник
Ответы:
Это зависит от того, какую оболочку вы предпочитаете использовать.
Если вы используете оболочку cmd в Windows, то должно работать следующее:
Если вы используете оболочку типа bash или zsh (например, git bash или babun в Windows или в большинстве оболочек Linux / OS X), то это гораздо более приятный и лаконичный способ сделать то, что вы хотите:
и это может быть уменьшено до одной строки с помощью ИЛИ:
Обратите внимание, что если ваши каталоги имен файлов содержат пробелы или кавычки, find отправит эти записи как есть, и xargs может разделиться на несколько записей. Если ваша оболочка поддерживает их
-print0
и-0
будет обходить этот короткий путь, то приведенные выше примеры станут следующими:и:
Если вы используете Powershell, вы можете использовать это:
как видно из ответа Роберта Н. ниже - просто убедитесь, что вы отдаете ему должное за ответ в PowerShell, а не мне, если вы решите что-либо проголосовать :)
Конечно, было бы разумно сначала выполнить любую команду, которую вы выберете в безопасном месте, чтобы проверить ее!
источник
Я нашел эту тему и получил бинго. Немного больше поиска обнаружил этот скрипт Power Shell:
Я думал, что поделюсь, учитывая, что я не нашел ответа, когда я искал здесь.
источник
gci -include bin,obj -recurse | remove-item -force -recurse
)-WhatIf
флаг для испытания первого, так что я в конечном итоге с этим:$foldersToRemove='bin','obj';[string[]]$foldersToIgnore='ThirdParty';Get-ChildItem .\ -Include $foldersToRemove -Recurse|Where-Object{$_.FullName -inotmatch "\\$($foldersToIgnore -join '|')\\"}|Remove-Item -Force -Recurse -WhatIf
(немного неаккуратно здесь как одна строка , хотя :))Это сработало для меня:
На основании этого ответа на superuser.com
источник
Я использую, чтобы всегда добавлять новую цель в мои решения для достижения этой цели.
И вы можете позвонить из командной строки
Это может быть ваш командный файл.
источник
Я написал скрипт PowerShell для этого.
Преимущество заключается в том, что он выводит сводные данные об удаленных папках и игнорируется, если вы указали какую-либо иерархию подпапок, которую следует игнорировать.
источник
$_ -notmatch 'node_modules'
условие для$FoldersToRemove
определения переменнойУ меня ничего не получалось. Мне нужно было удалить все файлы в папках bin и obj для отладки и выпуска. Мое решение:
1. Щелкните правой кнопкой мыши по проекту, выгрузите, снова щелкните правой кнопкой мыши, отредактируйте, перейдите вниз
2.Insert
3. Сохраните, перезагрузите проект, щелкните правой кнопкой мыши и очистите.
источник
Нечто подобное должно делать это довольно элегантно, после чистой цели:
источник
Чтобы удалить bin и obj перед сборкой, добавьте в файл проекта:
Вот статья: Как удалить папку bin и / или obj перед сборкой или развертыванием
источник
Очень похоже на скрипты Стива PowerShell. Я просто добавил TestResults и пакеты к нему, так как это необходимо для большинства проектов.
источник
Посмотрите на CleanProject , он удалит папки bin, obj, TestResults и Resharper. Исходный код также доступен.
источник
с помощью Windows PowerShell для удаления OBJ, BIN и ReSharper папки
очень похоже на ответ Роберта Х с более коротким синтаксисом
вставьте и запустите приведенный ниже скрипт
dir. \ -include bin, obj, resharper * -recurse | foreach ($ ) {rd $ _. полное имя –Recurse –Force}
источник
Очень быстрый и безболезненный способ - использовать
rimraf
утилиту npm, сначала установить ее глобально:И тогда команда из корня вашего проекта довольно проста (которую можно сохранить в файле скрипта):
Чтобы оптимизировать желаемый эффект, вы можете использовать цели проекта (которые вы могли бы использовать
BeforeRebuild
и запустить предыдущую команду), которые указаны в документации: https://docs.microsoft.com/en-us/visualstudio/ MSBuild / как к простираться-на-зрительно-студия-сборки-процесс? вид = VS-2017Мне нравится утилита rimraf, так как она кроссплатформенная и очень быстрая. Но вы также можете использовать
RemoveDir
команду в .csproj, если решите использовать опцию target event.RemoveDir
Подход был хорошо объяснено в другом ответе здесь @Shaman: https://stackoverflow.com/a/22306653/1534753источник
Вот ответ, который я дал на аналогичный вопрос: Простой, легкий, работает довольно хорошо и не требует ничего, кроме того, что у вас уже есть в Visual Studio.
Как уже отвечали другие, Clean удалит все артефакты, сгенерированные сборкой. Но это оставит позади все остальное.
Если у вас есть какие-то настройки в вашем проекте MSBuild, это может привести к проблемам и оставить вещи, которые вы могли бы удалить.
Вы можете обойти эту проблему, просто изменив свой. * Proj, добавив его где-то ближе к концу:
Который удалит все в вашей папке bin текущей платформы / конфигурации.
источник
Это мой командный файл, который я использую для рекурсивного удаления всех папок BIN и OBJ.
источник
«Чисто» не достаточно хорошо? Обратите внимание, что вы можете вызвать msbuild с помощью / t: clean из командной строки.
источник
На нашем сервере сборки мы явно удаляем каталоги bin и obj с помощью скриптов nant.
Каждый скрипт сборки проекта отвечает за свои выходные / временные каталоги. Так хорошо работает. Поэтому, когда мы меняем проект и добавляем новый, мы основываем сценарий на рабочем сценарии, и вы замечаете этап удаления и заботитесь о нем.
Если вы делаете это на своем компьютере для разработки логики, я бы придерживался правил очистки в Visual Studio, как уже упоминали другие.
источник
Я действительно ненавижу файлы obj, засоряющие исходные деревья. Обычно я настраиваю проекты так, чтобы они выводили файлы obj за пределы исходного дерева. Для проектов C # я обычно использую
Для проектов C ++
источник
http://vsclean.codeplex.com/
источник
На самом деле, вы можете пойти дальше к PS-предложению и создать файл vbs в каталоге проекта следующим образом:
В целях безопасности я включил параметр -WhatIf, поэтому удалите его, если вы удовлетворены списком при первом запуске.
источник
Я использую небольшую модификацию Robert H, которая пропускает ошибки и печатает удаленные файлы. Я обычно также очищаю
.vs
,_resharper
иpackage
папки:Также стоит отметить
git
команду, которая очищает все изменения, включая игнорируемые файлы и каталоги:источник
У нас есть большие файлы .SLN со многими файлами проекта. Я начал политику наличия директории «ViewLocal», в которой находятся все неконтролируемые файлы. Внутри этого каталога находится каталог Inter и Out. Для промежуточных файлов и выходных файлов соответственно.
Это, очевидно, позволяет легко перейти в каталог 'viewlocal' и выполнить простое удаление, чтобы избавиться от всего.
Прежде чем вы потратите время на поиск способа обойти это с помощью скриптов, вы можете подумать о создании чего-то подобного.
Хотя я не буду лгать, поддержание такой настройки в большой организации оказалось… интересным. Особенно, когда вы используете такие технологии, как QT, которые любят обрабатывать файлы и создавать неконтролируемые исходные файлы. Но это целая другая история!
источник
Учитывая, что файл PS1 присутствует в currentFolder (папка, в которой вам нужно удалить папки bin и obj)
источник
Для решения в партии. Я использую следующую команду:
FOR /D /R %%G in (obj,bin) DO @IF EXIST %%G IF %%~aG geq d RMDIR /S /Q "%%G"
Причина, по которой не используется
DIR /S /AD /B xxx
1.
DIR /S /AD /B obj
возвращает пустой список (по крайней мере, на моем Windows10) 2. будет содержать результат, который не ожидается (папка tobj)DIR /S /AD /B *obj
источник
@IF EXIST %%G IF %%~aG geq d
используется для проверки существующего пути, а путь - это папка, а не файл.Это прекрасно работает для меня: начать для / д / р. %% d в (bin, obj, ClientBin, Generated_Code) действительно ли @if существует "%% d" rd / s / q "%% d"
источник
Я использую файл .bat с этой запятой, чтобы сделать это.
источник
Я думаю, что вы можете щелкнуть правой кнопкой мыши ваше решение / проект и нажать кнопку «Очистить».
Насколько я помню, это работало так. У меня нет с собой VS.NET, поэтому я не могу его проверить.
источник