2009-04-01 4 views
3

Ich habe ein großes Projekt in Visual Studio 2008. Es hat eine Ansammlung von ein paar Jahren der Ausprobung und oft Ausschluss (nicht zu löschen) Dateien aus dem Projekt. Ich brauche eine Möglichkeit, alle ausgeschlossenen Dateien dauerhaft zu löschen. Es gibt Tausende von Dateien und Hunderte von Ordnern. Eine manuelle Ausführung im Solution Explorer würde zu viel Zeit in Anspruch nehmen.In Visual Studio, was ist eine schnelle Möglichkeit, alle Ausschlussdateien aus einem Projekt zu löschen?

Ich könnte einen Projektdateiparser erstellen und mit dem Dateisystem vergleichen, aber ich hoffe auf eine Verknüpfung.

Dank

Antwort

3

Ist die ausgeschlossenen Dateien unter Quellcodeverwaltung zusammen mit dem Rest? Ist dies nicht der Fall, stellen Sie sicher, dass alles eingecheckt ist, rufen Sie einen neuen temporären Speicherort ab, verschieben Sie das alte Verzeichnis als Sicherung und verschieben Sie den temporären Ordner an die Stelle des alten.

Wenn die Experimente in die Quellcodeverwaltung eingecheckt werden, ist es etwas schwieriger - Sie müssen wahrscheinlich mit dem Projektdateiparser gehen. Das mag aber nicht sehr schwer sein.

EDIT: Okay, wenn es alles in SVN ist, schlage ich vor, schreiben Sie eine sehr grobe Projekt Parser. Geben Sie eine Liste von XPath-Ausdrücken (oder etwas Ähnliches) ein, um sie als "wahrscheinlich Pfade" auszuwählen. Wählen Sie alles in der Projektdatei aus und kopieren Sie jede ausgewählte Datei an einen neuen Speicherort (einschließlich Unterverzeichnissen usw.). Kopieren Sie auch Projektdateien und Lösungsdateien. Dann versuche zu bauen - wenn es fehlschlägt, hast du etwas verpasst: wiederhole es.

Mach weiter, bis es aufgebaut ist, dann teste es. Solange alles in Ordnung ist, können Sie dann alles Schlag sonst weg :)

EDIT: Hier ist der Start von der Art der Sache, die ich meine:

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); 
     } 
    } 
} 

(ich ursprünglich mit XPath versucht, aber Das Namensraum-Zeug machte es zu einem Schmerz.)

+0

* Alles * ist in SVN. –

+0

Ich habe dies verwendet, um einige Zweige in größeren Projekten loszuwerden (nur um csproj zu modifizieren). Während dieser Ansatz wie Charme funktioniert, ist es immer noch eine Schande, dass ich eine Konsolenanwendung schreiben muss, wenn ich mehr als ein paar Dateien mit Visual Studio löschen möchte. –

+0

@OndrejSvejdar: Sie könnten möglicherweise in Erwägung ziehen, Skripts zu verwenden, um es ein wenig kompakter zu machen und zu vermeiden, dass Sie es als ein separates Projekt kompilieren müssen ... –

2

Rufen Sie eine Eingabeaufforderung auf und versuchen Sie DEL/S *.exclude. Ich denke nicht, dass Sie ein Add-In für Visual Studio viel besser schreiben würden.

Verwandte Themen