2010-12-15 15 views
1

Kennt jemand eine Möglichkeit, bestimmte Dateien aus einem C# -Projekt massiv auszuschließen? Ich möchte sie nicht löschen, und ich weiß, dass ich ihre individuellen Eigenschaften auf versteckt oder den Dateinamen mit einer Exclude-Erweiterung ändern kann, aber ich möchte wissen, ob es eine Möglichkeit in Visual Studio ist, dies zu tun.Auswahl aller Dateien mit einem bestimmten Namen und Ausschluss in C#

Zum Beispiel, wenn ich 1000 Verzeichnisse mit dem Dateinamen img.jpeg habe, möchte ich diese Datei von jedem Verzeichnis ausschließen.

Danke!

Antwort

0

Wenn Sie sie nur aus Ihrem Projekt entfernen möchten (ohne die eigentliche Datei zu löschen), öffnen Sie die .csproj-Datei mit einem Editor, der ein wenig besser als Notepad suchen und ersetzen kann und die Einträge löscht für diese Dateien. Speichern Sie die .csproj-Datei, und öffnen Sie sie erneut in Visual Studio.

Hinweis: Visual Studio ist ein ziemlich guter Editor dafür, da es auch eine gute und schnelle Multi-Datei-Suche & ersetzen kann. Sie müssen die .csproj nur als Textdatei öffnen, statt sie doppelt anzuklicken.

+0

Sieht aus wie das ist viel besser als mein Powershell-Skript :-) – Shoban

0

Sie müssen eine App oder ein Visual Studio-Plugin schreiben, um die Dateien von den Projekten auszuschließen. Persönlich würde ich nur eine App erstellen, die wie folgt vorgehen:

  1. Recursively finden alle CSPROJ Dateien in Ihrem Codebaum
  2. Öffnen Sie die cproj-Datei, indem es in ein XmlDocument Objekt
  3. Verwendung XPath (zB XmlDocument Laden .SelectSingleNode()/SelectNodes()), um das Tag der fraglichen Datei zu finden.

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

    wie folgt aussehen: mit XmlDocument.Save

So würde es einen Schnitt machen, der so aussieht

  • den Knoten entfernen und die Datei wieder auf die Festplatte speichern

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

    Beispiel-XPath-Code zum Suchen von Knoten:

    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); 
    
  • Verwandte Themen