2009-04-01 3 views
3

J'ai un projet LARGE dans le studio visuel 2008. Il a accumulé quelques années d'essai et souvent exclu (pas supprimé) les fichiers du projet. J'ai besoin d'un moyen de supprimer définitivement tout fichier exclu. Il y a des milliers de fichiers et des centaines de dossiers. Le faire manuellement dans l'explorateur de solution prendrait trop de temps.Dans Visual Studio, qu'est-ce qu'un moyen rapide de supprimer tous les fichiers d'exclusion d'un projet?

Je pourrais construire un analyseur de fichier de projet et comparer avec le système de fichiers mais j'espère un raccourci.

Merci

Répondre

3

Les fichiers exclus sont-ils sous contrôle de source avec le reste? Si ce n'est pas le cas, assurez-vous que tout est bien enregistré, allez dans un nouvel emplacement temporaire, déplacez l'ancien répertoire en tant que sauvegarde et déplacez le dossier temporaire vers l'ancien emplacement.

Si les expériences sont vérifiées dans le contrôle de la source, c'est un peu plus difficile - vous devrez probablement utiliser l'analyseur de fichier de projet. Cela pourrait bien ne pas être très difficile.

EDIT: Bon, si tout est dans le SVN, je vous suggère d'écrire un très parseur de projet brut. Donnez-lui une liste d'expressions XPath (ou quelque chose de similaire) à sélectionner comme "probablement chemins". Sélectionnez tout dans le fichier de projet et copiez chaque fichier sélectionné dans un nouvel emplacement (y compris les sous-répertoires, etc.). Copiez également les fichiers de projet et les fichiers de solution. Ensuite, essayez de construire - si cela échoue, vous avez manqué quelque chose: répétez.

Continuez jusqu'à ce qu'il se développe, puis testez-le. Tant que tout va bien, vous pouvez sauter tout le reste loin :)

EDIT: Voici le début du genre de chose que je veux dire:

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

(je l'origine essayé avec XPath, mais l'espace d'espace de nom a fait mal.)

+0

* Tout * est dans SVN. –

+0

Je l'ai utilisé pour se débarrasser de certaines branches dans un plus grand projet (juste pour modifier csproj). Bien que cette approche fonctionne comme le charme, il est toujours dommage que je dois écrire une application console si je veux supprimer plus de quelques fichiers en utilisant Visual Studio. –

+0

@OndrejSvejdar: Vous pourriez éventuellement envisager d'utiliser des scripts pour le rendre un peu plus compact, et éviter de devoir le compiler en tant que projet séparé ... –

2

Appelez une invite de commande et essayez DEL/S *.exclude. Je ne pense pas que vous feriez beaucoup mieux d'écrire un complément à Visual Studio.