我与多个项目一起工作,我想递归删除所有名为“bin”或“obj”的文件夹,这样我就可以确保所有项目都会重新构建所有内容(有时这是迫使Visual Studio忘记所有以前的构建的唯一方法)。
是否有一种快速的方法来实现这一点(例如使用.bat文件),而不必编写。net程序?
我与多个项目一起工作,我想递归删除所有名为“bin”或“obj”的文件夹,这样我就可以确保所有项目都会重新构建所有内容(有时这是迫使Visual Studio忘记所有以前的构建的唯一方法)。
是否有一种快速的方法来实现这一点(例如使用.bat文件),而不必编写。net程序?
当前回答
我认为你可以右键点击你的解决方案/项目,然后点击“清洁”按钮。
据我所知,它是这样工作的。我现在没有VS.NET,所以不能测试它。
其他回答
在我们的构建服务器上,我们通过nant脚本显式删除bin和obj目录。
每个项目构建脚本都负责它的输出/临时目录。这样做效果很好。因此,当我们更改一个项目并添加一个新项目时,我们将脚本建立在一个工作脚本的基础上,您会注意到删除阶段并照顾它。
如果你是在你的逻辑开发机上做的,我还是会像其他人提到的那样,坚持通过Visual Studio进行清理。
我使用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
我找到了这条线,然后赢了。再搜索一下就找到了这个power shell脚本:
Get-ChildItem .\ -include bin,obj -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }
或者更简洁:
gci -include bin,obj -recurse | remove-item -force -recurse
考虑到我在这里找不到答案,我想我应该分享一下。
为了达到这个目标,我总是在我的解决方案中添加一个新的目标。
<Target Name="clean_folders">
<RemoveDir Directories=".\ProjectName\bin" />
<RemoveDir Directories=".\ProjectName\obj" />
<RemoveDir Directories="$(ProjectVarName)\bin" />
<RemoveDir Directories="$(ProjectVarName)\obj" />
</Target>
您可以从命令行调用它
msbuild /t:clean_folders
这可以是您的批处理文件。
msbuild /t:clean_folders
PAUSE
对我来说什么都没用。我需要删除bin和obj文件夹中的所有文件进行调试和发布。我的解决方案:
1.右击项目,卸载,右击再次编辑,到底部
2.插入
<Target Name="DeleteBinObjFolders" BeforeTargets="Clean">
<RemoveDir Directories="..\..\Publish" />
<RemoveDir Directories=".\bin" />
<RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>
3.保存,重新加载项目,右键单击清洁和立即。