public static IEnumerable <FileInfo> Collect(DirectoryInfo dir) { foreach (var child in dir.GetDirectories().Where(d => !ExcludeDirs.Contains(d.Name))) { foreach (var file in Collect(child)) { yield return(file); } } foreach (var file in dir.GetFiles("*.cs")) { yield return(file); } }
/// <summary>Collect the C# files from a given location.</summary> /// <param name="dir"> /// the directory to collect files from. /// </param> /// <param name="debug"> /// If true exclude *.Release.cs otherwise *.Debug.cs. /// </param> /// <returns></returns> public static IEnumerable <FileInfo> CollectCSharpFiles(DirectoryInfo dir, bool debug = false) { foreach (var child in dir.GetDirectories().Where(d => !ExcludeDirs.Contains(d.Name))) { foreach (var file in CollectCSharpFiles(child, debug)) { yield return(file); } } foreach (var file in dir.GetFiles("*.cs")) { if (debug && !file.Name.EndsWith(".Release.cs") && file.Name != "AssemblyInfo.cs") { yield return(file); } else if (!file.Name.EndsWith(".Debug.cs") && file.Name != "AssemblyInfo.cs") { yield return(file); } } }