//get project private static Module.M_DomProject GetProject(XmlNode documentelement, string filenamepath) { XmlNode item = documentelement.ChildNodes[0]; Module.M_DomProject resultproject = new OpenProject.Come.Module.M_DomProject(); foreach (XmlNode node in item.ChildNodes) { switch (node.Name) { case "ProductVersion": resultproject.ProductVersion = node.InnerText; break; case "SchemaVersion": resultproject.SchemaVersion = node.InnerText; break; case "ProjectGuid": resultproject.ProjectGuid = node.InnerText; break; case "OutputType": resultproject.OutputType = node.InnerText; break; case "RootNamespace": resultproject.RootNameSpace = node.InnerText; break; case "AssemblyName": resultproject.AssemblyName = node.InnerText; break; } } GetReflectionAssemblyList(documentelement, resultproject); //get reflection assmbly list string[] dirlist = Directory.GetDirectories(filenamepath); if (dirlist.Length >= 0) //if project is directory { Module.M_DomDirectory dir = new OpenProject.Come.Module.M_DomDirectory(); GetDirectoryCsFileList(filenamepath, dir); foreach (Module.M_DomCs cs in dir.CsFileCollection) { resultproject.CsFileCollection.Add(cs); } resultproject._dir.Add(dir); } return(resultproject); }
//recursion get directory info private static void GetDirectoryCsFileList(string formDirectory, Module.M_DomDirectory dirdom) { if (Directory.Exists(formDirectory)) { string[] directory = Directory.GetDirectories(formDirectory); if (directory.Length > 0) { foreach (string path in directory)//foreach current directory list { if (Path.GetFileNameWithoutExtension(path) == "obj" || (Path.GetFileNameWithoutExtension(path) == "bin")) { continue; } Module.M_DomDirectory dir = new OpenProject.Come.Module.M_DomDirectory(); dir.FileName = Path.GetFileNameWithoutExtension(path); dir.FilePath = path; if (Path.GetFileNameWithoutExtension(path) == "Properties") { dir.DirectoryType = OpenProject.Come.Module.DirType.Propertties; //file path is properties } dirdom.DirCollection.Add(dir); //would current directory add directory collection GetDirectoryCsFileList(path, dir); //current get files List <string> files = new List <string>(); files.AddRange(Directory.GetFiles(path));//get current path file list for (int index = 0; index < files.Count; index++) { if (Path.GetExtension(files[index]) == ".csproj") { files.RemoveAt(index); } } if (files.Count > 0) { files.Sort();//element sort.employ element indent for (int i = 0; i < files.Count;) { if ((i + 2) < files.Count) { string filename = Path.GetFileName(files[i]).Split('.')[0]; string filename2 = Path.GetFileName(files[i + 1]).Split('.')[0]; string filename3 = Path.GetFileName(files[i + 2]).Split('.')[0]; if ((filename == filename2) && (filename2 == filename3))//is design type file { Module.M_DomCs csdom = new OpenProject.Come.Module.M_DomCs(); csdom.FileName = Path.GetFileName(files[i]); csdom.FilePath = files[i]; SetDesignFileIco(csdom, Path.GetExtension(files[i]), Path.GetFileName(files[i + 1]), Path.GetFileName(files[i + 2])); dir.CsFileCollection.Add(csdom); files.RemoveAt(i + 2); files.RemoveAt(i + 1); files.RemoveAt(i); continue; } } Module.M_DomCs cs = new OpenProject.Come.Module.M_DomCs(); cs.FileName = Path.GetFileName(files[i]); cs.FilePath = files[i]; SetFileIco(cs, Path.GetExtension(files[i])); dir.CsFileCollection.Add(cs); i++; } } } List <string> filess = new List <string>(); filess.AddRange(Directory.GetFiles(formDirectory));//get current path file list for (int index = 0; index < filess.Count; index++) { if (Path.GetExtension(filess[index]) == ".csproj") { filess.RemoveAt(index); } } if (filess.Count > 0) { filess.Sort();//element sort.employ element indent for (int i = 0; i < filess.Count;) { if ((i + 2) < filess.Count) { string filename = Path.GetFileName(filess[i]).Split('.')[0]; string filename2 = Path.GetFileName(filess[i + 1]).Split('.')[0]; string filename3 = Path.GetFileName(filess[i + 2]).Split('.')[0]; if ((filename == filename2) && (filename2 == filename3))//is design type file { Module.M_DomCs csdom = new OpenProject.Come.Module.M_DomCs(); csdom.FileName = Path.GetFileName(filess[i]); csdom.FilePath = filess[i]; SetDesignFileIco(csdom, Path.GetExtension(filess[i]), Path.GetFileName(filess[i + 1]), Path.GetFileName(filess[i + 2])); dirdom.CsFileCollection.Add(csdom); filess.RemoveAt(i + 2); filess.RemoveAt(i + 1); filess.RemoveAt(i); continue; } } Module.M_DomCs cs = new OpenProject.Come.Module.M_DomCs(); cs.FileName = Path.GetFileName(filess[i]); cs.FilePath = filess[i]; SetFileIco(cs, Path.GetExtension(filess[i])); dirdom.CsFileCollection.Add(cs); i++; } } } } }