.net 如何彻底清理VS 2012解决方案?

.net 如何彻底清理VS 2012解决方案?,.net,visual-studio,svn,.net,Visual Studio,Svn,有什么方法可以彻底清洁VS解决方案吗?我所说的完全是指不只是删除由活动配置构建的项目的当前输出。我的意思是清除所有生成配置的所有输出和中间文件 即使在更改生成输出路径之后,我也希望从以前的输出路径中删除输出 示例场景:我签出一个源代码树,生成一个发布版本,然后生成一个调试版本。现在我有了\bin\Debug目录和bin\Release目录,以及\obj目录。然后我想清理这两种配置的输出 也许Subversion是一个更好的工具,例如删除所有不受源代码控制的内容?否则,我假设一个批处理文件可以递归

有什么方法可以彻底清洁VS解决方案吗?我所说的完全是指不只是删除由活动配置构建的项目的当前输出。我的意思是清除所有生成配置的所有输出和中间文件

即使在更改生成输出路径之后,我也希望从以前的输出路径中删除输出

示例场景:我签出一个源代码树,生成一个发布版本,然后生成一个调试版本。现在我有了\bin\Debug目录和bin\Release目录,以及\obj目录。然后我想清理这两种配置的输出

也许Subversion是一个更好的工具,例如删除所有不受源代码控制的内容?否则,我假设一个批处理文件可以递归地清除obj、bin和TestResults目录,我可以将一个VS菜单项绑定到这个工具

我使用的是SVN1.7和VS2012


是否有人已经使用VS、SVN、PowerShell或windows批处理文件创建了这样的工具?

我们可以假设您的解决方案文件位于名为“MySolutionFolder”的文件夹中,并且在Subversion(SVN)下对其进行了代码版本控制,并且您在本地计算机上安装了TortoiseSVN客户端来管理代码版本控制

然后,右键单击选中代码文件夹“MySolutionFolder”的文件夹。然后选择选项
TortoiseSVN-->属性
。在打开的新窗口中,单击“新建”按钮,在弹出列表中选择“高级”。并在出现的新窗口中输入以下内容并保存

之后,再次点击“MySolutionFolder”并选择选项,
TortoiseSVN-->Revert
,然后在打开的新窗口中,单击“删除未版本项”。单击后,它将列出整个解决方案的所有未版本文件,包括“bin”和“obj”文件夹,因为它包含在
svn:ignore
列表中,以及其他未版本文件。选择要从中删除的项目,然后按“确定”。您的代码输出将被清除


此svn:ignore属性您甚至可以将其与代码一起提交,以便其他用户也能从中获益。

每当我向svn添加全新的解决方案时,我都会确保在提交之前将每个项目的
bin\
obj\
文件夹标记为已忽略。对于
.suo文件
(个人偏好),我也会这样做。这样,当我需要清理任何中间输出和构建输出时,我只需
TortoiseSVN->SVN清理…
并选中
Delete-ignored-files and folders

影响了我。相关部分:

您需要多长时间才能让新的团队成员在您的项目上高效地工作?如果答案不止一天,你就有问题了

我希望能够签出一个解决方案并在第一次构建它。我还希望能够轻松地使我的结帐“像新的一样”,这就是为什么我经常使用
SVN Cleanup

一个警告是,在执行
SVN清理之前,您可能必须关闭Visual Studio,以便
bin\
obj\
文件夹中的任何文件都不会被它锁定


希望这有帮助。

如果您需要一些细粒度的方法来只清理选定的解决方案或配置,您可以使用如下脚本:

$devenvPath = "`"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv`""
$configuration = (
    "Release",
    "Debug"
)
$platform = (
    "x86",
    "x64"
)
$sln = (
    "Sln1Path.sln",
    "Sln2Path.sln"
)
foreach ($c in $configuration)
{
    foreach($p in $platform)
    {
        foreach($s in $sln)
        {
            $pc = $c + "|" + $p
            $arg = "`"$s`" /clean `"$pc`""
            $cmd = "Start-Process -FilePath $devenvPath -ArgumentList `'$arg`' -Wait -NoNewWindow"
            echo $cmd
            $proc = invoke-expression $cmd
            echo "`n`n`n`n`n"
        }
    }
}

是的,这正是我想要的。如果我能把它和一个VS菜单项联系起来,那就太理想了。我可以通过命令行完成吗?否则,我认为我实际上更愿意执行批处理/PS脚本来检查svn状态,并删除那些具有该状态的可能是您正在寻找的。我之所以使用它,是因为它很简单,而且只工作(TM)。问题是:是否可以使用命令行进行清理?我看不出如何指定这些选项。有普通的命令,但似乎没有办法告诉它删除被忽略和未版本化的文件。(不过我已经被GUI客户端宠坏了,所以我可能错过了一些明显的东西)。这里也有这样的。最后,为了完整性,还有一个问题。