void ProcLine(string line) { var lineType = DeterminLineType(line); switch (lineType) { case LineType.StartProject: ProcStartProject(line); break; case LineType.EndProject: this.currentProject = null; this.SolutionFileState = State.NotInProject; break; case LineType.StartDependencyList: this.SolutionFileState = State.InProjectDependencies; break; case LineType.EndDependencyList: this.SolutionFileState = State.InProject; break; case LineType.DependencyLine: ProcDependencyLine(line); break; } }
void ProcStartProject(string line) { var match = ProjectLineRegex.Match(line); if (match.Groups.Count == 5) { if (match.Groups[1].Value.ToUpperInvariant() == SolutionFolderId) { this.SolutionFileState = State.InSolutionFolder; return; } this.currentProject = new ProjectFileReference() { Id = match.Groups[4].Value.ToUpperInvariant(), Name = match.Groups[2].Value, FilePath = XPlatHelper.FullyNormalizePath(this.SolutionFile.Directory, match.Groups[3].Value) }; this.SolutionFile.ProjectFiles.Add(this.currentProject); } this.SolutionFileState = State.InProject; }