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
                                 });
                             }
                         }
                     }
                 }
             }
         }
     }
 }