private void FetchProjectReferedBy(Project project, ProjectList projects, string suffix, StreamWriter outfile, string rootName) { Console.WriteLine(string.Format("Try to find projects have directly refer to {0} from {1}", project.Name, rootName)); foreach (Project parentProject in projects) { if (!ProcessedLinks.Contains(parentProject.Name + "-" + rootName)) { if (parentProject.ReferencedProjects.Any(p => p.Name == project.Name) || parentProject.ReferenceList.Contains(project.Name)) { Console.WriteLine(string.Format("{0} --> {3}; project path is {2}", parentProject.Name, project.Name, parentProject.ProjectPath, suffix)); outfile.WriteLine(string.Format("{0} --> {3}; project path is {2}", parentProject.Name, project.Name, parentProject.ProjectPath, suffix)); suffix = string.Format(" {0} --> {1}", parentProject.Name, suffix); ProcessedLinks.Add(parentProject.Name + "-" + rootName); FetchProjectReferedBy(parentProject, projects, suffix, outfile, rootName); } } } }
private void GetDistinctProjects(ProjectList projects, ProjectList projectList) { // ProjectList projectList = new ProjectList(); foreach (Project project in projects) { if (!projectList.Any(x => x.Name == project.Name)) projectList.Add(project); foreach (string refer in project.ReferenceList) { Project tmp = new Project(); tmp.Name = refer; if (!projectList.Any(x => x.Name == refer)) projectList.Add(tmp); } foreach (Project reference in project.ReferencedProjects) { if (!projectList.Any(x => x.Name == reference.Name)) { projectList.Add(reference); GetDistinctProjects(reference.ReferencedProjects, projectList); } } } }
private void FetchProjectRefence( Project project, string prefix, StreamWriter outfile, bool isRoot = true) { string tempfix = string.Format("{0} - {1}", prefix, project.Name); string rString = string.Format("{0}: {1}", tempfix, project.ProjectPath); Console.WriteLine(rString); outfile.WriteLine(rString); foreach (string refer in project.ReferenceList) { rString = string.Format("{0} Assembly Refer: {1}", tempfix, refer); Console.WriteLine(rString); outfile.WriteLine(rString); } foreach (Project reference in project.ReferencedProjects) { rString = string.Format("{0} Project Refer: {1}", tempfix, reference.Name); Console.WriteLine(rString); outfile.WriteLine(rString); FetchProjectRefence(reference, tempfix, outfile, false); } }