В Visual Studio, как быстро удалить все исключаемые файлы из проекта? - PullRequest
3 голосов
/ 02 апреля 2009

У меня есть БОЛЬШОЙ проект в visual studio 2008. Он накопил несколько лет, пытаясь что-то сделать, и часто исключая (не удаляя) файлы из проекта. Мне нужен способ навсегда удалить любой исключенный файл. Есть тысячи файлов и сотни папок. Выполнение этого вручную в обозревателе решений займет слишком много времени.

Я мог бы создать анализатор файлов проекта и сравнить с файловой системой, но я надеюсь на ярлык.

Спасибо

Ответы [ 2 ]

3 голосов
/ 02 апреля 2009

Находятся ли исключенные файлы под контролем исходного кода вместе с остальными? Если нет, просто убедитесь, что все проверено, выберите новое временное расположение, переместите старый каталог в качестве резервной копии и перенесите временную папку туда, где был старый.

Если эксперименты проверены на управление исходным кодом, это немного сложнее - вам, вероятно, придется пойти с анализатором файлов проекта. Это может быть не очень сложно, хотя.

РЕДАКТИРОВАТЬ: Хорошо, если все это в 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, но из-за проблем с пространством имен это было неприятно.)

2 голосов
/ 02 апреля 2009

Откройте командную строку и попробуйте DEL/S *.exclude. Я не думаю, что вам лучше написать надстройку для Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...