我与多个项目一起工作,我想递归删除所有名为“bin”或“obj”的文件夹,这样我就可以确保所有项目都会重新构建所有内容(有时这是迫使Visual Studio忘记所有以前的构建的唯一方法)。
是否有一种快速的方法来实现这一点(例如使用.bat文件),而不必编写。net程序?
我与多个项目一起工作,我想递归删除所有名为“bin”或“obj”的文件夹,这样我就可以确保所有项目都会重新构建所有内容(有时这是迫使Visual Studio忘记所有以前的构建的唯一方法)。
是否有一种快速的方法来实现这一点(例如使用.bat文件),而不必编写。net程序?
当前回答
我认为你可以右键点击你的解决方案/项目,然后点击“清洁”按钮。
据我所知,它是这样工作的。我现在没有VS.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文件夹)
我采取了不同的方法来解决这个问题。我没有编写一个脚本来寻找不同位置的所有“obj”和“bin”文件夹,而是直接在构建过程中将这些文件夹分组在一个方便的位置。
在解决方案文件夹中添加一个Directory.Build.props文件,如下所示:
<Project>
<PropertyGroup>
<BaseProjectArtifactPath>$(MSBuildThisFileDirectory).artifacts\$(MSBuildProjectName)</BaseProjectArtifactPath>
<BaseOutputPath>$(BaseProjectArtifactPath)\bin\</BaseOutputPath>
<BaseIntermediateOutputPath>$(BaseProjectArtifactPath)\obj\</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
现在,所有的“bin”和“obj”文件夹将被创建在解决方案根目录下的一个单独的.artifacts文件夹中,而不是各个项目文件夹中。准备好重新开始了吗?只要删除.artifacts文件夹就可以了。
这对我来说很好: 开始/d /r。%%d in (bin,obj, ClientBin,Generated_Code) do @if exist "%%d" rd /s /q "%%d"
考虑到PS1文件在currentFolder(你需要删除bin和obj文件夹的文件夹)中
$currentPath = $MyInvocation.MyCommand.Path
$currentFolder = Split-Path $currentPath
Get-ChildItem $currentFolder -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
我们有一个大的。sln文件与许多项目文件。我开始了一个“ViewLocal”目录的策略,所有非源代码控制的文件都位于这个目录中。该目录中有一个“Inter”和一个“Out”目录。分别用于中间文件和输出文件。
这显然让你很容易去到你的“viewlocal”目录,做一个简单的删除,以摆脱一切。
在花时间研究如何使用脚本解决这个问题之前,您可能会考虑设置一些类似的东西。
我不会说谎,在一个大型组织中维持这样的设置已经证明....有趣。特别是当您使用像QT这样的技术来处理文件和创建非源代码控制的源文件时。但那完全是另一回事了!