Visual studio 如何在VisualStudio中完全清理bin和obj文件夹?
如果你右键点击一个文件夹,你会看到一个“干净”的菜单项。我认为这将清理(删除)obj和bin目录。 然而,据我所知,它没有任何作用。 还有别的办法吗? (请不要告诉我转到Windows资源管理器或cmd.exe)Visual studio 如何在VisualStudio中完全清理bin和obj文件夹?,visual-studio,msbuild,Visual Studio,Msbuild,如果你右键点击一个文件夹,你会看到一个“干净”的菜单项。我认为这将清理(删除)obj和bin目录。 然而,据我所知,它没有任何作用。 还有别的办法吗? (请不要告诉我转到Windows资源管理器或cmd.exe) 我想删除obj和bin文件夹,以便轻松地压缩整个内容。它不会删除文件夹,但会删除生成的副产品。是否有任何原因需要删除实际生成文件夹?Clean将删除生成过程创建的所有中间文件和最终文件,例如.obj文件和.exe或.dll文件 但是,它不会删除生成这些文件的目录。 我看不出有什么令人信
我想删除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中轻松找到并删除bin和obj文件夹
- 在“一个文件掩码或多个文件掩码”字段中键入“bin,obj”
- 选中选项“搜索文件夹”
- 按回车键
希望它能帮助到别人。如果您正在使用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 "$(ProjectDir)$(BaseOutputPath)" && ^" />
<!--remove obj-->
<Exec Command="rd /s /q "$(BaseIntermediateOutputPath)Release"" />
</Target>
function CleanSolution {
Get-ChildItem -inc bin,obj -rec | Remove-Item -rec -force
}
Set-Alias cs CleanSolution