在Visual Studio中,删除项目中所有排除文件的快捷方式是什么?

3

我在Visual Studio 2008中有一个庞大的项目。它是几年来尝试各种东西的积累,经常从项目中排除(而不是删除)文件。我需要一种永久删除任何排除文件的方法。有成千上万个文件和数百个文件夹。在解决方案资源管理器中手动完成这项工作需要太多时间。

我可以构建一个项目文件解析器并与文件系统进行比较,但我希望有一个快捷方式。

谢谢。

2个回答

3
被排除在源代码控制之外的文件是否与其余文件一起进行控制?如果没有,只需确保所有内容都已检入,然后获取到一个新的临时位置,将旧目录作为备份移开,然后将临时文件夹移动到旧目录所在的位置。
如果实验已经被检入源代码控制,那就略微复杂一些——你可能需要使用项目文件解析器。但这可能并不难。
编辑:好吧,如果一切都在SVN中,我建议你编写一个非常简单的项目解析器。给它一个XPath表达式列表(或类似的东西)来选择“可能路径”。选择项目文件中的所有内容,并将每个选定的文件复制到一个新的位置(包括子目录等)。同时复制项目文件和解决方案文件。然后尝试构建——如果失败了,你就错过了什么:重复以上步骤。
继续进行,直到构建成功,然后进行测试。只要一切正常,你就可以把其他东西全部删除 :)
编辑:以下是我所说的这种解析器的开头:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;

public class ProjectParser
{
    static void Main(string[] args)
    {
        XDocument doc = XDocument.Load(args[0]);

        XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
        DumpMatches(doc.Descendants(ns + "Compile")
                       .Select(x => x.Attribute("Include").Value));
        DumpMatches(doc.Descendants(ns + "AssemblyOriginatorKeyFile")
                       .Select(x => x.Value));
    }

    static void DumpMatches(IEnumerable<string> values)
    {
        foreach (string x in values)
        {
            Console.WriteLine(x);
        }
    }
}

我最初尝试使用XPath,但命名空间的问题使其变得棘手。


我使用这种方法来消除较大项目中的一些分支(仅修改csproj)。尽管这种方法非常有效,但如果我想要使用Visual Studio删除多个文件,仍然很遗憾我必须编写控制台应用程序。 - Ondrej Svejdar
@OndrejSvejdar:你可以考虑使用scriptcs来使它更加紧凑,避免将其编译为单独的项目... - Jon Skeet

2
打开命令提示符并尝试使用DEL/S *.exclude命令。我认为编写一个Visual Studio的插件也不会更好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接