2010-12-15 80 views
1

Est-ce que quelqu'un connaît un moyen d'exclure massivement des fichiers spécifiques d'un projet C#? Je ne veux pas les supprimer, et je sais que je peux définir leurs propriétés individuelles à caché ou modifier le nom de fichier avec une extension .exclude, mais je veux savoir si leur est un moyen dans Visual Studio de le faire. Par exemple, si j'ai 1000 répertoires avec le nom de fichier img.jpeg, je veux exclure ce fichier de tous les répertoires.Sélectionner tous les fichiers avec un nom spécifique et exclure en C#

Merci!

Répondre

0

Si vous voulez simplement les supprimer de votre projet (sans supprimer le fichier réel), ouvrez le fichier .csproj avec un éditeur qui peut faire une recherche et remplacer un peu mieux que le bloc-notes (caractères génériques au moins) et supprimer les entrées pour ces fichiers. Enregistrez le fichier .csproj et rouvrez dans Visual Studio.

Remarque: Visual Studio est un très bon éditeur pour cela, car il a également une bonne et rapide recherche de fichiers multiples & remplacer. Il suffit d'ouvrir le fichier .csproj en tant que fichier texte au lieu de double-cliquer dessus.

+0

On dirait que c'est beaucoup mieux que mon script powershell :-) – Shoban

0

Vous devrez écrire une application ou un plugin Visual Studio pour exclure les fichiers des projets. Personnellement, je voudrais juste créer une application qui procédez comme suit:

  1. trouver récursive tous les fichiers .csproj dans votre arbre de code
  2. Ouvrez le fichier cproj en le chargeant dans un objet XmlDocument
  3. Utilisez XPath (par exemple XmlDocument .SelectSingleNode()/SelectNodes()) pour trouver la balise du fichier en question.
  4. Retirez le nœud et enregistrez le fichier en arrière sur le disque en utilisant XmlDocument.Save

Il ferait une section qui ressemble à ceci:

<ItemGroup> 
    <EmbeddedResource Include="licenses.licx" /> 
    <EmbeddedResource Include="img.jpeg" /> 
</ItemGroup> 

ressembler à ceci:

<ItemGroup> 
    <EmbeddedResource Include="licenses.licx" /> 
</ItemGroup> 

Exemple de code XPath pour trouver le noeud:

XmlDocument csprojDoc; // this is the document you loaded your csproj XML into 
XmlNamespaceManager xnm; // you'll need to build one of these because csproj files use namspaces in the XML 

XmlNode excludeNode = 
    csprojDoc.SelectSingleNode("//ns:ItemGroup/ns:EmbeddedResource[@Include='img.jpeg']", xnm); 

excludeNode.ParentNode.ChildNodes.Remove(excludeNode);