public static IEnumerable <SpecialFolderDescription> EnumSpecialFolders(DirectoryInfo di) { var fi = di.GetFiles(BootstrapperDirInfo.fileName).FirstOrDefault(); if (fi != null) { SpecialFolderDescription sfd = null; try { using (var fs = fi.OpenRead()) { using (var xr = new XmlTextReader(fs)) { var dirInfo = xr.Deserialize <BootstrapperDirInfo>(); sfd = new SpecialFolderDescription { info = dirInfo, directory = di }; } } } catch (Exception err) { log.WriteError(String.Format("failed to deserialize dir.info file with error:{0}", err.Message)); dbg.Break(); } if (sfd != null) { yield return(sfd); } } foreach (var sdi in di.GetDirectories()) { foreach (var sfd in EnumSpecialFolders(sdi)) { yield return(sfd); } } }
public static IEnumerable<SpecialFolderDescription> EnumSpecialFolders(DirectoryInfo di) { var fi = di.GetFiles(BootstrapperDirInfo.fileName).FirstOrDefault(); if (fi != null) { SpecialFolderDescription sfd = null; try { using (var fs = fi.OpenRead()) { using (var xr = new XmlTextReader(fs)) { var dirInfo = xr.Deserialize<BootstrapperDirInfo>(); sfd = new SpecialFolderDescription { info = dirInfo, directory = di }; } } } catch (Exception err) { log.WriteError(String.Format("failed to deserialize dir.info file with error:{0}", err.Message)); dbg.Break(); } if (sfd != null) { yield return sfd; } } foreach (var sdi in di.GetDirectories()) { foreach (var sfd in EnumSpecialFolders(sdi)) { yield return sfd; } } }