C# EnvDTE - Alle Ordner eines Projektes (rekursiv)

Thaxll'ssillyia

Commander
Dabei seit
Dez. 2007
Beiträge
2.874
Hallo Community!

Ich arbeite derzeit beruflich an einem AddIn für VS 2010.
Dieses Codegenerierungs-Tool greift unter anderem auf die Projektstruktur des aktuellen Projektes zu.

Code:
foreach (ProjectItem projectItem in project.ProjectItems) {
     //blabla
}
Leider liefert mir diese Schleife nur die Dateien, die im Hauptverzeichnis des Projektes liegen.

Project besitzt keine Eigenschaft "Folders" oder "Directories". Ich würde gerne alle Dateien des Projektes bzw. der Ordner des Projektes empfangen (am Besten rekursiv), nur fehlt mir irgendwie eine Property, um die Ordner des Projektes zu listen.

Weiß jemand Rat? Vielen Dank für Hilfe!

Gruß Thax
 

PapstRatze

Lt. Junior Grade
Dabei seit
Aug. 2008
Beiträge
436
Ich glaube du suchst nach DirectoryInfo (aus System.IO).

Code:
System.IO.DirectoryInfo bla = new System.IO.DirectoryInfo(projectItem.FullPath())
dann hast du einen Ordner, den du Rekursiv durchsuchen kannst ;). Dann kommst du mit GetDirectories und GetFiles an die Dateien und Ordner im aktuellen Ordner.
 

pvc-junkie

Ensign
Dabei seit
Juni 2007
Beiträge
156
Geht so in diese Richtung, sprich über das Dateisystem. Bei den ProjectItems sollten auch die Ordner dabei sein.

Code:
from item in projectItems
where item.Kind == EnvDTE.Constants.vsProjectItemKindPhysicalFolder
   && item.Properties != null
   && Directory.Exists(item.Properties.Item("LocalPath").Value.ToString())
select item;
 
M

Marguth

Gast
für sowas hab ich die Shell32.dll benutzt.
ist leider ein privatprojekt deshalb kann ich den Coder erst heute abend posten...
 
Top