如何清理Visual Studio bin和obj文件夹
如果你右键点击一个文件夹,你会看到一个“清洁”菜单项。 我认为这将清理(删除)obj和bin目录。 但是,据我所知,它什么都不做。 有另一种方法吗? (请不要告诉我去Windows资源pipe理器或cmd.exe)我想删除obj和bin文件夹,以便我可以轻松地压缩整个事情。
正如其他人已经回应干净将删除所有构build生成的文物。 但它会留下一切。
如果你在你的MSBuild项目中有一些自定义的话,这可能会给你带来麻烦,并留下一些你认为应该删除的东西。
你可以通过简单的改变你的。* proj来解决这个问题
<Target Name="SpicNSpan" AfterTargets="Clean"> <RemoveDir Directories="$(OUTDIR)"/> </Target>
这将删除当前平台/configuration的bin文件夹中的所有内容。
——编辑根据萨满的答案稍微进化(分享选票,也给他一些)
<Target Name="SpicNSpan" AfterTargets="Clean"> <!-- Remove obj folder --> <RemoveDir Directories="$(BaseIntermediateOutputPath)" /> <!-- Remove bin folder --> <RemoveDir Directories="$(BaseOutputPath)" /> </Target>
—-再次使用xDisruptor中的部分编辑,但是我删除了.vs删除,因为在.gitignore(或等效)
更新了VS 2015。
<Target Name="SpicNSpan" AfterTargets="Clean"> <!-- common vars https://msdn.microsoft.com/en-us/library/c02as0cs.aspx?f=255&MSPPError=-2147217396 --> <RemoveDir Directories="$(TargetDir)" /> <!-- bin --> <RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" /> <!-- obj --> </Target>
他还提供了一个很好的build议,如果你有多个项目推动这个任务,那么这个任务就更易于部署和维护。
如果您对这个答案投票,一定要同时投票。
对于Visual Studio 2015,MSBuildvariables已经改变了一下:
<Target Name="SpicNSpan" AfterTargets="Clean"> <!-- common vars https://msdn.microsoft.com/en-us/library/c02as0cs.aspx?f=255&MSPPError=-2147217396 --> <RemoveDir Directories="$(TargetDir)" /> <!-- bin --> <RemoveDir Directories="$(SolutionDir).vs" /> <!-- .vs --> <RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" /> <!-- obj --> </Target>
注意这个代码片段也从你的解决scheme的根目录中清除了.vs文件夹。 如果您觉得删除.vs文件夹是一个矫枉过正的行为,您可能需要注释掉相关行。 我启用它,因为我注意到,在某些第三方项目中,当.a文件夹中存在文件ala application.config时,会导致问题。
附录:
如果你正在优化你的解决scheme的可维护性,你可能想要更进一步,把上面的代码片段放到一个单独的文件中,如下所示:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="SpicNSpan" AfterTargets="Clean"> <!-- common vars https://msdn.microsoft.com/en-us/library/c02as0cs.aspx?f=255&MSPPError=-2147217396 --> <RemoveDir Directories="$(TargetDir)" /> <!-- bin --> <RemoveDir Directories="$(SolutionDir).vs" /> <!-- .vs --> <RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" /> <!-- obj --> </Target> </Project>
然后在每个* .csproj文件的最后包含这个文件,如下所示:
[...] <Import Project="..\..\Tools\ExtraCleanup.targets"/> </Project>
通过这种方式,您可以在一个地方集中或精调您的额外清理逻辑,而无需每次手动编辑每个* .csproj文件,而无需每次都想进行改进。
看看Ron Jacobs奇妙的开源CleanProject如果你喜欢,它甚至会照顾到压缩。
这是CodePlex 链接
在build之前删除bin和obj添加到项目文件中:
<Target Name="BeforeBuild"> <!-- Remove obj folder --> <RemoveDir Directories="$(BaseIntermediateOutputPath)" /> <!-- Remove bin folder --> <RemoveDir Directories="$(BaseOutputPath)" /> </Target>
这里是文章: 如何在构build或部署之前删除bin和/或obj文件夹
如果你正在使用git并在你的项目中有一个正确的.gitignore
,你可以
git clean -xdf --dry-run
绝对删除.gitignore
列表中的每个文件,即它将清理obj
和bin
文件夹( x
触发此行为)
这个小实用程序可能是你想要的。
它还会删除* .suo和* .user文件,并生成所有无法删除的文件和文件夹的报告
此站点: https : //sachabarbs.wordpress.com/2014/10/24/powershell-to-clean-visual-studio-binobj-folders/使用powershell从当前目录和子目录中删除任何bin和obj文件夹。 应该可以从驱动器的根目录下运行下面是文章中的引用:
这是威廉姆斯版本
gci -inc bin,obj -rec | rm -rec -force
威廉姆斯自己的话
这将清除当前目录和每个子目录中的所有“bin”和“obj”目录。 在工作空间目录中运行非常有用,以达到“干净”的状态,特别是当有人搞砸了,IDE内部的Clean或Rebuild没有捕获的时候。
对于那些你可能不知道的读者来说,PowerShell支持命令别名,在这里它不会被别名重写
Get-ChildItem -inc bin,obj -rec | Remove-Item -rec -force
注意:你应该把它存储在一个PowerShell文件中,并将该文件放在你的解决scheme的根目录(.sln文件所在的位置),然后在你想要一个合适的清理(而不是VisualStudio所做的一个Micky鼠标)并报告成功)。
Clean将删除由构build过程创build的所有中间文件和最终文件,例如.obj文件和.exe或.dll文件。
但是,它不会删除这些文件构build的目录。 我没有看到一个令人信服的理由,为什么你需要删除目录。 你能进一步解释吗?
如果你在“Clean”之前和之后查看这些目录,你应该看到你的编译输出被清除。
它不会删除文件夹,但会删除构build的副产品。 是否有任何理由要删除实际的构build文件夹 ?
我不能添加评论(没有最小的声望)
所以我留下这个回复强调:
使用<RemoveDir Directories="$(BaseIntermediateOutputPath)" />
RemoveDir <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
的“BeforeBuild”操作非常好,但对我来说,与包含在同一个项目中的entity framework模型冲突。
我收到的错误是:
Error reading resource '{mymodel}.csdl' -- 'Could not find a part of the path '{myprojectpath}\obj\Release\edmxResourcesToEmbed\{mymodel}.csdl
我想,“edmxResourcesToembed”是在执行“BeforeBuild”目标动作之前创build的。
基于乔答案,我已经将VB代码转换为C#:
/// <summary> /// Based on code of VSProjCleaner tool (C) 2005 Francesco Balena, Code Archirects /// </summary> static class VisualStudioCleaner { public static void Process(string rootDir) { // Read all the folder names in the specified directory tree string[] dirNames = Directory.GetDirectories(rootDir, "*.*", SearchOption.AllDirectories); List<string> errorsList = new List<string>(); // delete any .suo and csproj.user file foreach (string dir in dirNames) { var files = new List<string>(); files.AddRange(Directory.GetFiles(dir, "*.suo")); files.AddRange(Directory.GetFiles(dir, "*.user")); foreach (string fileName in files) { try { Console.Write("Deleting {0} ...", fileName); File.Delete(fileName); Console.WriteLine("DONE"); } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(" ERROR: {0}", ex.Message); errorsList.Add(fileName + ": " + ex.Message); } } } // Delete all the BIN and OBJ subdirectories foreach (string dir in dirNames) { string dirName = Path.GetFileName(dir).ToLower(); if (dirName == "bin" || dirName == "obj") { try { Console.Write("Deleting {0} ...", dir); Directory.Delete(dir, true); Console.WriteLine("DONE"); } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(" ERROR: {0}", ex.Message); errorsList.Add(dir + ": " + ex.Message); } } } Console.WriteLine(new string('-', 60)); if (errorsList.Count == 0) { Console.WriteLine("All directories and files were removed successfully"); } else { Console.WriteLine("{0} directories or directories couldn't be removed", errorsList.Count); Console.WriteLine(new string('-', 60)); foreach (string msg in errorsList) { Console.WriteLine(msg); } } } }
您可以在远程pipe理器中轻松find并删除bin和obj文件夹。
- 导航到您的解决scheme,然后按Alt + F7
-
在search设置对话框中:
- 在“文件掩码或多个文件掩码”字段中input“bin,obj ”
- 检查选项 “search文件夹”
- 按Enter键
-
search完成后, 将视图切换到“面板” 。
- select所有文件(使用Ctrl + A)并删除文件夹(按“Shift + Del”)
希望它可以帮助别人。
我使用易于理解和可预测的VisualStudioClean 。 知道它是如何工作的,它将删除哪些文件,使我感到舒服。
以前我试过VSClean (注意VisualStudioClean不是VSClean),VSClean更先进,它有很多configuration,有时会让我想知道它将删除哪些文件? 一个错误configuration将导致我的源代码丢失。 testingconfiguration的工作方式需要备份所有需要花费很多时间的项目,所以最终我select了VisualStudioClean。
结论:VisualStudioClean如果你想要基本清理VSClean更复杂的场景。