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