diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Project.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Project.cs index 71522859871..0802a17b01a 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/Project.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Project.cs @@ -23,6 +23,8 @@ namespace Semmle.Autobuild.Shared public Version ToolsVersion { get; private set; } + public string? TargetFramework { get; private set; } + private readonly Lazy>> includedProjectsLazy; public override IEnumerable IncludedProjects => includedProjectsLazy.Value; @@ -51,7 +53,8 @@ namespace Semmle.Autobuild.Shared { if (root.HasAttribute("Sdk")) { - DotNetProject = true; + this.DotNetProject = true; + this.TargetFramework = root.SelectSingleNode("//Project/PropertyGroup/TargetFramework/text()")?.Value; return; } @@ -72,11 +75,12 @@ namespace Semmle.Autobuild.Shared includedProjectsLazy = new Lazy>>(() => { + var mgr = new XmlNamespaceManager(projFile.NameTable); + mgr.AddNamespace("msbuild", "http://schemas.microsoft.com/developer/msbuild/2003"); + var ret = new List>(); // The documentation on `.proj` files is very limited, but it appears that both // `` and `` is valid - var mgr = new XmlNamespaceManager(projFile.NameTable); - mgr.AddNamespace("msbuild", "http://schemas.microsoft.com/developer/msbuild/2003"); var projectFileIncludes = root.SelectNodes("//msbuild:Project/msbuild:ItemGroup/msbuild:ProjectFile/@Include", mgr) ?.OfType() ?? Array.Empty(); var projectFilesIncludes = root.SelectNodes("//msbuild:Project/msbuild:ItemGroup/msbuild:ProjectFiles/@Include", mgr)