3

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

即使在更改构建输出路径之后,我也想从以前的输出路径中删除输出。

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

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

我正在使用 SVN 1.7 和 VS 2012。

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

4

3 回答 3

5

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

TortoiseSVN 1.7 的清理对话框

Jeff Atwood 的这篇文章影响了我。相关部分:

您需要多长时间才能让新的团队成员高效地完成您的项目?如果答案超过一天,你就有问题了

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

需要注意的是,在执行 an 之前,您可能必须关闭 Visual Studio,SVN Cleanup这样您的bin\obj\文件夹中的所有文件都不会被它锁定。

希望这可以帮助。

于 2013-03-04T08:32:36.830 回答
2

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

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

SVN 忽略窗口

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

这个 svn:ignore 属性你甚至可以和你的代码一起提交,这样其他用户也可以从中受益。

于 2013-03-04T08:10:19.717 回答
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"
        }
    }
}
于 2014-12-17T13:00:10.680 回答