public IEnumerator GetEnumerator() { // Iterate all repositories foreach (TestRepository repository in Repositories) { // Iterate all available preferences foreach (EnvironmentPreference preference in Preferences) { // Only build the desired preferences if (!repository.Preference.HasValue || repository.Preference.Value == preference) { // Iterate all solution files in the repository foreach (string solutionPath in Directory.EnumerateFiles(GetRepositoryPath(repository.Url), "*.sln", SearchOption.AllDirectories)) { // Exclude any solution files we don't want to build if (!repository.Excluded.Any(x => solutionPath.EndsWith(x))) { // Get all the projects in this solution foreach (string projectPath in AnalyzerManager.GetProjectsInSolution(solutionPath).Select(project => project.AbsolutePath)) { // Exclude any project files we don't want to build if (!repository.Excluded.Any(x => projectPath.EndsWith(x))) { yield return(new object[] { preference, solutionPath, projectPath }); } } } } } } } }