Visual studio 如何在VisualStudio中完全清理bin和obj文件夹?

Visual studio 如何在VisualStudio中完全清理bin和obj文件夹?,visual-studio,msbuild,Visual Studio,Msbuild,如果你右键点击一个文件夹,你会看到一个“干净”的菜单项。我认为这将清理(删除)obj和bin目录。 然而,据我所知,它没有任何作用。 还有别的办法吗? (请不要告诉我转到Windows资源管理器或cmd.exe) 我想删除obj和bin文件夹,以便轻松地压缩整个内容。它不会删除文件夹,但会删除生成的副产品。是否有任何原因需要删除实际生成文件夹?Clean将删除生成过程创建的所有中间文件和最终文件,例如.obj文件和.exe或.dll文件 但是,它不会删除生成这些文件的目录。 我看不出有什么令人信

如果你右键点击一个文件夹,你会看到一个“干净”的菜单项。我认为这将清理(删除)obj和bin目录。 然而,据我所知,它没有任何作用。 还有别的办法吗? (请不要告诉我转到Windows资源管理器或cmd.exe)
我想删除obj和bin文件夹,以便轻松地压缩整个内容。

它不会删除文件夹,但会删除生成的副产品。是否有任何原因需要删除实际生成文件夹?

Clean将删除生成过程创建的所有中间文件和最终文件,例如.obj文件和.exe或.dll文件

但是,它不会删除生成这些文件的目录。 我看不出有什么令人信服的理由需要删除这些目录。 你能进一步解释一下吗


如果您在“清理”前后查看这些目录,您应该会看到编译后的输出得到清理。

查看Ron Jacobs fantastic open source,如果您愿意,它甚至可以处理压缩


这里是CodePlex,因为其他人已经做出响应,Clean将删除生成的所有工件。但它会留下其他一切

如果您的MSBuild项目中有一些自定义项,这可能会带来麻烦,并留下您认为应该删除的内容

您可以通过在靠近末尾的某个地方添加以下内容,对您的.*项目进行简单的更改,从而避免此问题:


这将删除当前平台/配置的bin文件夹中的所有内容

------编辑 基于以下内容的轻微变化(分享选票,也给他一些)


----使用中的部分再次编辑,但我删除了.vs删除,因为在.gitignore(或同等版本)中使用它会更好

针对VS 2015进行了更新


他还提供了一个很好的建议,如果您有多个项目要推进这项工作,那么可以使任务更易于部署和维护


如果您对这个答案投了赞成票,请务必同时对这两个答案投赞成票。

要在生成添加到项目文件之前删除bin和obj:



这是一篇文章:

基于Joe的回答,我将VB代码转换为C#:

//
///基于VSProjCleaner工具(C)2005 Francesco Balena的代码,代码架构
/// 
静态类VisualStudioCleaner
{
公共静态无效进程(字符串rootDir)
{
//读取指定目录树中的所有文件夹名称
字符串[]dirNames=Directory.GetDirectories(rootDir,*.*,SearchOption.AllDirectories);
列表错误列表=新列表();
//删除任何.suo和csproj.user文件
foreach(dirNames中的字符串dir){
var files=新列表();
files.AddRange(Directory.GetFiles(dir,*.suo));
files.AddRange(Directory.GetFiles(dir,*.user));
foreach(文件中的字符串文件名){
试一试{
Write(“删除{0}…”,文件名);
删除(文件名);
控制台。写入线(“完成”);
}捕获(例外情况除外){
Console.WriteLine();
WriteLine(“错误:{0}”,例如Message);
errorsList.Add(文件名+”:“+ex.Message);
}
}
}
//删除所有BIN和OBJ子目录
foreach(dirNames中的字符串dir){
string dirName=Path.GetFileName(dir.ToLower();
if(dirName==“bin”| | dirName==“obj”){
试一试{
Write(“删除{0}…”,dir);
Directory.Delete(dir,true);
控制台。写入线(“完成”);
}捕获(例外情况除外){
Console.WriteLine();
WriteLine(“错误:{0}”,例如Message);
errorsList.Add(dir+“:”+ex.Message);
}
}
}
Console.WriteLine(新字符串('-',60));
如果(errorsList.Count==0){
WriteLine(“已成功删除所有目录和文件”);
}否则{
WriteLine(“{0}个目录或目录无法删除”,errorsList.Count);
Console.WriteLine(新字符串('-',60));
foreach(errorsList中的字符串msg){
控制台写入线(msg);
}
}
}
}

您可以在Far Manager中轻松找到并删除binobj文件夹

  • 导航到您的解决方案并按Alt+F7
  • 在“搜索设置”对话框中:

    • 在“一个文件掩码或多个文件掩码”字段中键入“bin,obj”
    • 选中选项“搜索文件夹”
    • 按回车键
  • 搜索完成后,将视图切换到“面板”

  • 选择所有文件(使用Ctrl+A)并删除文件夹(按“Shift+Del”)

  • 希望它能帮助到别人。

    如果您正在使用git,并且在项目中有一个正确的
    .gitignore
    ,您可以

    git clean -xdf --dry-run
    

    要绝对删除
    .gitignore
    列表中的每个文件,即它将清理
    obj
    bin
    文件夹(
    x
    触发此行为)

    对于Visual Studio 2015,MSBuild变量有一点变化:

    
    
    请注意,此代码段还清除了解决方案根目录中的.vs文件夹。如果您觉得删除.vs文件夹是一种过分的做法,那么您可能需要注释掉关联的行。我之所以启用它,是因为我注意到在一些第三方项目中,当.vs文件夹中存在文件ala application.config时,它会导致问题

    增编:

    如果你喜欢优化
    Error reading resource '{mymodel}.csdl' -- 'Could not find a part of the path '{myprojectpath}\obj\Release\edmxResourcesToEmbed\{mymodel}.csdl
    
     gci -inc bin,obj -rec | rm -rec -force
    
    Get-ChildItem -inc bin,obj -rec | Remove-Item -rec -force
    
    <Target Name="PreBuild" BeforeTargets="PreBuildEvent" Condition="'$(Configuration)' == 'Release'">
      <!--remove bin-->
      <Exec Command="rd /s /q &quot;$(ProjectDir)$(BaseOutputPath)&quot; &amp;&amp; ^" />
      <!--remove obj-->
      <Exec Command="rd /s /q &quot;$(BaseIntermediateOutputPath)Release&quot;" />
    </Target>
    
    function CleanSolution {
        Get-ChildItem -inc bin,obj -rec | Remove-Item -rec -force
    }
    
    Set-Alias cs CleanSolution