Skip to content

Commit bb3947e

Browse files
thomhurstclaude
andcommitted
refactor: Use ProjectRootElement instead of XDocument for consistency
Replace XDocument-based XML parsing with ProjectRootElement from Microsoft.Build.Construction, matching the existing pattern used in GenerateReadMeModule.cs. This provides a more idiomatic approach for parsing MSBuild project files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 1ea1e46 commit bb3947e

1 file changed

Lines changed: 7 additions & 12 deletions

File tree

src/ModularPipelines.Build/Modules/FindProjectDependenciesModule.cs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Xml.Linq;
1+
using Microsoft.Build.Construction;
22
using Microsoft.Extensions.Logging;
33
using ModularPipelines.Attributes;
44
using ModularPipelines.Context;
@@ -10,24 +10,19 @@ namespace ModularPipelines.Build.Modules;
1010
[DependsOn<FindProjectsModule>]
1111
public class FindProjectDependenciesModule : Module<FindProjectDependenciesModule.ProjectDependencies>
1212
{
13-
public override async Task<ProjectDependencies?> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
13+
public override Task<ProjectDependencies?> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
1414
{
1515
var projects = context.GetModule<FindProjectsModule, IReadOnlyList<File>>();
1616

1717
var dependencies = new List<File>();
1818

1919
foreach (var file in projects.Value!)
2020
{
21-
await using var stream = System.IO.File.OpenRead(file.Path);
22-
var doc = await XDocument.LoadAsync(
23-
stream,
24-
LoadOptions.None,
25-
cancellationToken);
21+
var projectRootElement = ProjectRootElement.Open(file)!;
2622

27-
var projectReferences = doc.Descendants()
28-
.Where(e => e.Name.LocalName == "ProjectReference")
29-
.Select(e => e.Attribute("Include")?.Value)
30-
.OfType<string>();
23+
var projectReferences = projectRootElement.Items
24+
.Where(i => i.ItemType == "ProjectReference")
25+
.Select(i => i.Include);
3126

3227
foreach (var reference in projectReferences)
3328
{
@@ -45,7 +40,7 @@ public class FindProjectDependenciesModule : Module<FindProjectDependenciesModul
4540

4641
LogProjects(context, projectDependencies);
4742

48-
return projectDependencies;
43+
return Task.FromResult<ProjectDependencies?>(projectDependencies);
4944
}
5045

5146
private static void LogProjects(IModuleContext context, ProjectDependencies projectDependencies)

0 commit comments

Comments
 (0)