public void ExtractProjects()
 {
     if (Version.Major != 14)
     {
         throw new SolutionParserException($"Not supported solution file version: {Version}");
     }
     foreach (var line in SlnLines)
     {
         string[] lineParts = line.Split(',');
         if (lineParts.Length == 3 &&
             lineParts[0].StartsWith("Project") &&
             !lineParts[0].StartsWith(@"Project(""{2150E333-8FDC-42A3-9474-1A3956D46DE8}"")"))
         {
             try
             {
                 string name         = lineParts[0].Split('=')[1].Trim(' ', '"');
                 string relativePath = lineParts[1].Trim(' ', '"');
                 Uri    projectUri;
                 if (!Uri.TryCreate(SlnFileUri, relativePath, out projectUri))
                 {
                     throw new SolutionParserException($"Failed to create full path for project line [{line}]");
                 }
                 Guid          projectUid = new Guid(lineParts[2].Trim(' ', '"'));
                 ProjectParser project    = new ProjectParser(this, name, projectUri, projectUid);
                 projectsByUid[project.Uid]   = project;
                 projectsByName[project.Name] = project;
             }
             catch (Exception ex)
             {
                 throw new SolutionParserException($"Failed to parse project entry line: [{line}]", ex);
             }
         }
     }
 }
 public NugetReferenceParser(ProjectParser project, XmlNode referenceNode) : base(project, referenceNode)
 {
     Trace.Write($"NugetReference: {this}");
 }
 public ReferenceParser(ProjectParser project, XmlNode referenceNode)
 {
     Project       = project;
     ReferenceNode = referenceNode;
 }
 public AssemblyReferenceParser(ProjectParser project, XmlNode referenceNode) : base(project, referenceNode)
 {
     Trace.Write($"AssemblyReference: {this}");
 }