Я хочу удалить все папки bin и obj, чтобы заставить все проекты перестраивать все - PullRequest
211 голосов
/ 16 апреля 2009

Я работаю с несколькими проектами и хочу рекурсивно удалить все папки с именем «bin» или «obj» таким образом, я уверен, что все проекты будут перестраивать все (иногда это единственный способ заставить Visual Studio забыть все о предыдущих сборках).

Есть ли быстрый способ сделать это (например, с помощью файла .bat) без необходимости писать программу .NET?

Ответы [ 25 ]

2 голосов
/ 19 августа 2013

Вот ответ Я ответил на аналогичный вопрос: Простой, легкий, работает довольно хорошо и не требует ничего, кроме того, что у вас уже есть в Visual Studio.

Так как другие уже ответили, Clean удалит все артефакты, сгенерированные сборкой. Но это оставит позади все остальное.

Если у вас есть некоторые настройки в вашем проекте MSBuild, это может привести к проблемам и оставить вещи, которые, как вы думаете, должны были быть удалены.

Вы можете обойти эту проблему, просто изменив свой. * Proj, добавив его где-то ближе к концу:

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

Который удалит все в вашей папке bin текущей платформы / конфигурации.

2 голосов
/ 04 июня 2013

из Использование Windows PowerShell для удаления папок obj, bin и ReSharper

очень похоже на Роберт Н ответ с более коротким синтаксисом

  1. запустить powershell
  2. cd (изменить каталог) в корневой каталог вашей папки проекта
  3. вставьте и запустите скрипт ниже

    dir. \ -Include bin, obj, resharper * -recurse | foreach ($ ) {rd $ _. полное имя –Recurse –Force}

1 голос
/ 30 марта 2012

На самом деле вы можете пойти дальше к PS-предложению и создать файл vbs в каталоге проекта следующим образом:

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

В целях безопасности я включил параметр -WhatIf, поэтому удалите его, если вы удовлетворены списком при первом запуске.

1 голос
/ 23 июня 2009

http://vsclean.codeplex.com/

Инструмент командной строки, который находит Visual Студия решений и запускает Clean командовать им. Это позволяет вам чистить вверх по каталогам / bin / * всех этих старые проекты у вас валяются ваш жесткий диск

1 голос
/ 16 апреля 2009

На нашем сервере сборки мы явно удаляем каталоги bin и obj с помощью скриптов nant.

Каждый скрипт сборки проекта отвечает за свои выходные / временные каталоги. Так хорошо работает. Поэтому, когда мы меняем проект и добавляем новый, мы основываем скрипт на рабочем скрипте, и вы замечаете этап удаления и заботитесь о нем.

Если вы делаете это на своем компьютере для разработки логики, я бы продолжал чистить через Visual Studio, как уже упоминали другие.

1 голос
/ 16 апреля 2009

Разве «чистый» не достаточно хорош? Обратите внимание, что вы можете вызвать msbuild с помощью / t: clean из командной строки.

1 голос
/ 19 марта 2018

Это мой командный файл, который я использую для рекурсивного удаления всех папок BIN и OBJ.

  1. Создайте пустой файл и назовите его DeleteBinObjFolders.bat
  2. Скопируйте и вставьте код ниже в DeleteBinObjFolders.bat
  3. Переместите файл DeleteBinObjFolders.bat в ту же папку, где находится файл решения (* .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
1 голос
/ 04 февраля 2019

Я использую небольшую модификацию Robert H , которая пропускает ошибки и печатает удаленные файлы. Обычно я также очищаю папки .vs, _resharper и package:

Get-ChildItem -include bin,obj,packages,'_ReSharper.Caches','.vs' -Force -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse -ErrorAction SilentlyContinue -Verbose}

Также стоит отметить команду git, которая очищает все изменения, включая игнорируемые файлы и каталоги:

git clean -dfx
0 голосов
/ 04 июня 2019

Это прекрасно работает для меня: начать для / д / р. %% d в (bin, obj, ClientBin, Generated_Code) действительно ли @if существует "%% d" rd / s / q "%% d"

0 голосов
/ 01 марта 2019

Очень быстрый и безболезненный способ - использовать утилиту rimraf npm, сначала установите ее глобально:

> npm i rimraf -g

И тогда команда из корня вашего проекта довольно проста (которую можно сохранить в файле скрипта):

projectRoot> rimraf **/bin **/obj

Чтобы оптимизировать желаемый эффект, вы можете использовать цели проекта (вы можете использовать BeforeRebuild и запустить предыдущую команду), которые указаны в документации: https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-extend-the-visual-studio-build-process?view=vs-2017

Мне нравится утилита rimraf, так как она кроссплатформенная и очень быстрая. Но вы также можете использовать команду RemoveDir в .csproj, если решите использовать опцию target event. Подход RemoveDir был хорошо объяснен в другом ответе здесь @Shaman: https://stackoverflow.com/a/22306653/1534753

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...