public void LoadProjectTest() { var s = new Solution(); s.LoadSolution(GetTestSolutionPath()); var p = new SolutionProject(s); p.LoadProject(GetTestProjectPath()); }
private string GetAbsolutePath(Settings settings, SolutionProject project) { string path = null; if (global) { path = System.IO.Path.Combine(settings.ConfigRoot, this.path); } else { path = System.IO.Path.GetDirectoryName(project.GetProjectAbsolutePath()); path = System.IO.Path.Combine(path, this.path); } path = System.IO.Path.GetFullPath(path); return(path); }
public XmlDocument LoadIncludeFile(Settings settings, SolutionProject project) { var path = GetAbsolutePath(settings, project); try { var xml = new XmlDocument(); xml.Load(path); return(xml); } catch (XmlException ex) { throw Error.XmlFormatError(ex, path); } catch (Exception ex) { throw Error.XmlLoadError(ex, path); } }
public void LoadSolution(string path) { this.path = path; this.projects = new List <SolutionProject>(); var parser_type = Type.GetType("Microsoft.Build.Construction.SolutionParser, Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); var parser_solutionReader = parser_type.GetProperty("SolutionReader", BindingFlags.NonPublic | BindingFlags.Instance); var parser_parseSolution = parser_type.GetMethod("ParseSolution", BindingFlags.NonPublic | BindingFlags.Instance); var parser_projects = parser_type.GetProperty("Projects", BindingFlags.NonPublic | BindingFlags.Instance); var project_type = Type.GetType("Microsoft.Build.Construction.ProjectInSolution, Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", false, false); var project_ProjectName = project_type.GetProperty("ProjectName", BindingFlags.NonPublic | BindingFlags.Instance); var project_RelativePath = project_type.GetProperty("RelativePath", BindingFlags.NonPublic | BindingFlags.Instance); var project_ProjectType = project_type.GetProperty("ProjectType", BindingFlags.NonPublic | BindingFlags.Instance); var parser = parser_type.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic).First().Invoke(null); using (var streamReader = new StreamReader(path)) { parser_solutionReader.SetValue(parser, streamReader, null); parser_parseSolution.Invoke(parser, null); } var array = (Array)parser_projects.GetValue(parser, null); for (int i = 0; i < array.Length; i++) { var project = array.GetValue(i); var type = (Microsoft.Build.Construction.SolutionProjectType)project_ProjectType.GetValue(project); if ((type & Microsoft.Build.Construction.SolutionProjectType.KnownToBeMSBuildFormat) != 0) { var pp = (string)project_RelativePath.GetValue(project); var p = new SolutionProject(this); p.LoadProject(pp); projects.Add(p); } } }
public static ConfigException MissingBaseConfig(SolutionProject project) { var msg = String.Format(ErrorMessages.MissingBaseConfig, project.Name); return(new ConfigException(msg)); }