private void ParseProjects(CheckBoxList ctlConfigFiles, InfoBox ctlNoConfigFiles, SourceControlProviderBase provider)
        {
            var parsedProjects = this.Projects
                .Select(p => ReadProject(provider, this.SolutionPath + provider.DirectorySeparator + p.ScmPath))
                .ToArray();

            if (parsedProjects.SelectMany(p => GetConfigFiles(p)).Any())
            {
                for (int i = 0; i < this.Projects.Length; i++)
                {
                    foreach (var configFile in GetConfigFiles(parsedProjects[i]))
                        ctlConfigFiles.Items.Add(new ListItem(configFile + " in " + this.Projects[i].Name, this.Projects[i].ScmPath + '|' + configFile));
                }
            }
            else
            {
                ctlNoConfigFiles.Visible = true;
            }
        }
 private static string GetProjectPath(SourceControlProviderBase provider, string solutionPath, string relativeProjectPath)
 {
     var separator = provider.DirectorySeparator;
     var solutionDir = solutionPath.Substring(0, solutionPath.LastIndexOf(separator));
     return solutionDir + separator + relativeProjectPath.Replace('\\', separator).TrimStart(separator);
 }
 private static MSBuildProject ReadProject(SourceControlProviderBase provider, string path)
 {
     var fileBytes = provider.GetFileContents(path);
     return MSBuildProject.Load(new MemoryStream(fileBytes));
 }