diff --git a/RELEASE.md b/RELEASE.md index 1f2fbb2b..dbd61386 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,3 +1,7 @@ +# 5.0.2 + +- Ensures paths being passed to Roslyn in Buildalyzer.Workspaces are absolute (#232, thanks @tjchester). + # 5.0.1 - Added support for additional files on `GetWorkspace()` (#231, thanks @Corniel). diff --git a/src/Buildalyzer.Workspaces/AnalyzerResultExtensions.cs b/src/Buildalyzer.Workspaces/AnalyzerResultExtensions.cs index 63682e24..0d6d532f 100644 --- a/src/Buildalyzer.Workspaces/AnalyzerResultExtensions.cs +++ b/src/Buildalyzer.Workspaces/AnalyzerResultExtensions.cs @@ -287,7 +287,7 @@ private static IEnumerable GetAdditionalDocuments(IAnalyzerResult { string projectDirectory = Path.GetDirectoryName(analyzerResult.ProjectFilePath); string[] additionalFiles = analyzerResult.AdditionalFiles ?? Array.Empty(); - return GetDocuments(additionalFiles.Select(x => Path.Combine(projectDirectory, x)), projectId); + return GetDocuments(additionalFiles.Select(x => Path.Combine(projectDirectory!, x)), projectId); } private static IEnumerable GetMetadataReferences(IAnalyzerResult analyzerResult) => @@ -300,8 +300,9 @@ private static IEnumerable GetAnalyzerReferences(IAnalyzerRes { IAnalyzerAssemblyLoader loader = workspace.Services.GetRequiredService().GetLoader(); - return analyzerResult.AnalyzerReferences?.Where(x => File.Exists(Path.GetFullPath(x))) - .Select(x => new AnalyzerFileReference(Path.GetFullPath(x), loader)) + string projectDirectory = Path.GetDirectoryName(analyzerResult.ProjectFilePath); + return analyzerResult.AnalyzerReferences?.Where(x => File.Exists(Path.GetFullPath(x, projectDirectory!))) + .Select(x => new AnalyzerFileReference(Path.GetFullPath(x, projectDirectory!), loader)) ?? (IEnumerable)Array.Empty(); }