我与多个项目一起工作,我想递归删除所有名为“bin”或“obj”的文件夹,这样我就可以确保所有项目都会重新构建所有内容(有时这是迫使Visual Studio忘记所有以前的构建的唯一方法)。
是否有一种快速的方法来实现这一点(例如使用.bat文件),而不必编写。net程序?
我与多个项目一起工作,我想递归删除所有名为“bin”或“obj”的文件夹,这样我就可以确保所有项目都会重新构建所有内容(有时这是迫使Visual Studio忘记所有以前的构建的唯一方法)。
是否有一种快速的方法来实现这一点(例如使用.bat文件),而不必编写。net程序?
当前回答
用于批量解决方案。我正在使用以下命令:
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. DIR /S /AD /B *obj将包含非预期的结果(tobj文件夹)
其他回答
下面是我给类似问题的答案,简单,容易,工作得很好,不需要任何其他东西,除了你已经有Visual Studio。
正如其他人已经回应的那样,Clean将删除所有由构建生成的工件。但它会把一切都抛在脑后。
如果你在你的MSBuild项目中有一些自定义,这可能会带来麻烦,并留下一些你认为应该删除的东西。
你可以通过简单地修改你的。*proj来避免这个问题:
<Target Name="SpicNSpan"
AfterTargets="Clean">
<RemoveDir Directories="$(OUTDIR)"/>
</Target>
这将删除当前平台/配置的bin文件夹中的所有内容。
在添加到项目文件之前删除bin和obj:
<Target Name="BeforeBuild">
<!-- Remove obj folder -->
<RemoveDir Directories="$(BaseIntermediateOutputPath)" />
<!-- Remove bin folder -->
<RemoveDir Directories="$(BaseOutputPath)" />
</Target>
这是文章:如何删除bin和/或obj文件夹构建或部署之前
与Steve的PowerShell脚本非常相似。我只是向它添加了TestResults和包,因为大多数项目都需要它。
Get-ChildItem .\ -include bin,obj,packages,TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
对我来说什么都没用。我需要删除bin和obj文件夹中的所有文件进行调试和发布。我的解决方案:
1.右击项目,卸载,右击再次编辑,到底部
2.插入
<Target Name="DeleteBinObjFolders" BeforeTargets="Clean">
<RemoveDir Directories="..\..\Publish" />
<RemoveDir Directories=".\bin" />
<RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>
3.保存,重新加载项目,右键单击清洁和立即。
实际上,你可以进一步使用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参数,所以如果在第一次运行时对列表感到满意,可以删除它。