当前位置:  开发笔记 > 编程语言 > 正文

我想删除所有bin和obj文件夹以强制所有项目重建所有内容

如何解决《我想删除所有bin和obj文件夹以强制所有项目重建所有内容》经验,为你挑选了8个好方法。

我使用多个项目,我希望递归删除名为'bin'或'obj'的所有文件夹,这样我确信所有项目都会重建所有内容(有时这是强制Visual Studio忘记以前的唯一方法)编译).

有没有快速的方法来完成这个(例如.bat文件)而不必编写.NET程序?



1> Steve Willco..:

这取决于您喜欢使用的shell.

如果您在Windows上使用cmd shell,则以下内容应该有效:

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"

如果你使用bash或zsh类型的shell(例如Windows上的git bash或babun或大多数Linux/OS X shell),那么这是一个更好,更简洁的方法来做你想要的:

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

这可以通过OR减少到一行:

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

请注意,如果您的文件名目录包含空格或引号,则find将按原样发送这些条目,xargs可以将其分成多个条目.在macOS上,解决方法是使用-print0和-0,以便上面的示例变为:

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

和:

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

如果您使用的是Powershell,那么您可以使用:

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

正如罗伯特H在下面的回答中所看到的那样 - 如果你选择投票,那么请确保你为powershell答案而不是我给予他赞誉:)

当然,最好先运行安全的任何命令来测试它!


"%% G此时出乎意料" - 当您从命令行而不是批处理文件中运行时会发生这种情况.在这种情况下使用单个'%'.
谢谢你的回答.我收到一个错误:%% G此时出乎意料.
+1你介意为我解释代码吗?请.
@SteveWillcock这比干净好.Clean不会删除项目中未引用的dll(剩菜).

2> Robert H...:

我找到了这个帖子并得到了宾果游戏.再多搜索一下这个电源shell脚本:

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

考虑到我在这里看时没找到答案,我以为我会分享.


你不需要foreach - 你应该只能将gci管道直接移入remove-item(即`gci -include bin,obj -recurse | remove-item -force -recurse`)

3> Daniel Rehne..:

这对我有用:

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

基于superuser.com 上的这个答案


将%%替换为%以从命令行运行
@ParoX你需要在.bat文件中运行它

4> Jhonny D. Ca..:

我总是在我的解决方案中添加一个新目标来实现这一目标.


  
  
  
  

你可以从命令行调用它

msbuild /t:clean_folders

这可以是您的批处理文件.

msbuild /t:clean_folders
PAUSE


@PiotrOwsiak是的,您需要在您拥有.sln的同一目录中创建文件"before.MySlnFileName.sln.targets"并将目标定义放在那里
你可以将AfterTargets ="Clean"作为属性添加到Target中,它将在Clean之后自动调用,在执行重建时直接或间接调用Clean

5> doblak..:

我写了一个powershell脚本来做到这一点.

优点是它打印出已删除文件夹的摘要,如果指定了要忽略的子文件夹层次结构,则忽略这些文件夹.

输出示例


@Sahuagin它不是一个单行程,你只需要c/p来控制和执行.因此,我发现在github上链接到MIT许可脚本是一个更好的选择.

6> Kdefthog..:

没有什么对我有用.我需要删除bin和obj文件夹中的所有文件以进行调试和发布.我的解决方案

1.右键单击项目,卸载,再次右键单击编辑,转到底部

2.插入


  
  
  

3.保存,重新加载项目,右键单击"清理"和"presto".



7> vezenkov..:

在清洁目标之后,像这样的东西应该以非常优雅的方式做到:


    
    



8> Shaman..:

要在构建之前删除bin和obj,请添加到项目文件:


    
    
    
    

以下是文章:如何在构建或部署之前删除bin和/或obj文件夹

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有