如何彻底清理我的VS 2012解决方案?

时间:2013-03-04 07:52:01

标签: .net visual-studio svn

有什么方法可以完全清理VS解决方案吗?完全我的意思不仅仅是删除Active配置构建的项目的当前输出。我的意思是清除所有所有构建配置的输出和中间文件。

即使我更改了构建输出路径,我也想删除以前输出路径的输出。

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

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

我正在使用SVN 1.7和VS 2012。

有没有人使用VS,SVN,PowerShell或Windows批处理文件创建了这样的工具?

3 个答案:

答案 0 :(得分:5)

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

TortoiseSVN 1.7's Clean up Dialog

This article by Jeff Atwood影响了我。相关部分:

  

让您的新团队成员在您的项目上高效工作需要多长时间?如果答案超过一天,您遇到了问题

我希望能够查看解决方案,并让它第一次构建。我也希望能够轻松地让我的结帐“像新的一样”,这就是我使用SVN Cleanup的原因。

有一点需要注意的是,在执行SVN Cleanup之前,您可能必须关闭Visual Studio才能使bin\obj\文件夹中的所有文件都被锁定。

希望这有帮助。

答案 1 :(得分:2)

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

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

SVN Ignore Window

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

这个svn:ignore属性,你甚至可以提交你的代码,以便其他用户也可以利用它。

答案 2 :(得分:0)

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

$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"
        }
    }
}