diff --git a/src/SlnParser/Helper/EnrichSolutionWithProjects.cs b/src/SlnParser/Helper/EnrichSolutionWithProjects.cs index 268c109..6f3cdee 100644 --- a/src/SlnParser/Helper/EnrichSolutionWithProjects.cs +++ b/src/SlnParser/Helper/EnrichSolutionWithProjects.cs @@ -25,18 +25,18 @@ public void Enrich(Solution solution, IEnumerable fileContents) if (fileContents == null) throw new ArgumentNullException(nameof(fileContents)); var fileContentsList = fileContents.ToList(); - var flatProjects = GetProjectsFlat(fileContentsList).ToList(); + var flatProjects = GetProjectsFlat(solution, fileContentsList).ToList(); solution.AllProjects = flatProjects.ToList().AsReadOnly(); var structuredProjects = GetProjectsStructured(fileContentsList, flatProjects); solution.Projects = structuredProjects.ToList().AsReadOnly(); } - private IEnumerable GetProjectsFlat(IEnumerable fileContents) + private IEnumerable GetProjectsFlat(Solution solution, IEnumerable fileContents) { var flatProjects = new Collection(); foreach (var line in fileContents) - ProcessLine(line, flatProjects); + ProcessLine(solution, line, flatProjects); return flatProjects; } @@ -53,7 +53,10 @@ private static IEnumerable GetProjectsStructured( return structuredProjects; } - private void ProcessLine(string line, ICollection flatProjectList) + private void ProcessLine( + Solution solution, + string line, + ICollection flatProjectList) { if (!line.StartsWith("Project(\"{")) return; @@ -69,7 +72,13 @@ private void ProcessLine(string line, ICollection flatProjectList) var projectTypeGuid = Guid.Parse(projectTypeGuidString); var projectGuid = Guid.Parse(projectGuidString); - var projectFile = new FileInfo(projectPath); + + var solutionDirectory = Path.GetDirectoryName(solution.File.FullName); + if (solutionDirectory == null) + throw new UnexpectedSolutionStructureException("Solution-Directory could not be determined"); + + var projectFileCombinedWithSolution = Path.Combine(solutionDirectory, projectPath); + var projectFile = new FileInfo(projectFileCombinedWithSolution); var projectType = _projectTypeMapper.Map(projectTypeGuid);