FileItemBase GetItem(EnvDTE.ProjectItem projectItem) { if (projectItem.FileCount < 1) { return(null); } string fileName = null; try { fileName = projectItem.FileNames[0]; } catch { try { fileName = projectItem.Name; } catch { } } if (fileName == null) { return(null); } FileItemBase item = null; if (File.Exists(fileName)) { var fileInfo = new FileInfo(fileName); item = new FileItem(GetChildrenItems(projectItem).ToList()) { Name = fileInfo.Name, Path = fileName }; } if (Directory.Exists(fileName)) { var info = new DirectoryInfo(fileName); item = new FolderItem(GetChildrenItems(projectItem).ToList()) { Name = info.Name, Path = fileName }; } if (item == null) { return(null); } item.ItemWrapper = new ProjectItemWrapper(projectItem); item.IsCheckOut = dte.SourceControl.IsItemCheckedOut(fileName); item.IsNew = !dte.SourceControl.IsItemUnderSCC(fileName); item.MergeState = MergeState.None; return(item); }
IEnumerable <FileItemBase> GetFilesAndDirectories(Project project) { ProjectItems children = project.ProjectItems; if (children == null || children.Count == 0) { yield break; } foreach (EnvDTE.ProjectItem projectItem in children) { FileItemBase item = GetItem(projectItem); if (item != null) { yield return(item); } } }