Skip to content

Commit cc7769c

Browse files
committed
Use Xml for gathering additional properties from referenced projects
1 parent e28bab1 commit cc7769c

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/Tasks/Microsoft.NET.Build.Tasks/ValidateExecutableReferences.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Linq;
88
using System.Text;
99
using System.Threading.Tasks;
10+
using System.Xml.Linq;
1011
using Microsoft.Build.Framework;
1112

1213
namespace Microsoft.NET.Build.Tasks
@@ -30,13 +31,13 @@ protected override void ExecuteCore()
3031
foreach (var project in ReferencedProjects)
3132
{
3233
string nearestTargetFramework = project.GetMetadata("NearestTargetFramework");
33-
int targetFrameworkIndex = project.GetMetadata("TargetFrameworks").Split(';').ToList().IndexOf(nearestTargetFramework);
34-
string projectAdditionalPropertiesMetadata = project.GetMetadata("AdditionalPropertiesFromProject").Split(new[] { ";;" }, StringSplitOptions.None)[targetFrameworkIndex];
34+
35+
var additionalPropertiesXml = XElement.Parse(project.GetMetadata("AdditionalPropertiesFromProject"));
36+
var targetFrameworkElement = additionalPropertiesXml.Element(nearestTargetFramework);
3537
Dictionary<string, string> projectAdditionalProperties = new(StringComparer.OrdinalIgnoreCase);
36-
foreach (var propAndValue in projectAdditionalPropertiesMetadata.Split(';'))
38+
foreach (var propertyElement in targetFrameworkElement.Elements())
3739
{
38-
var split = propAndValue.Split('=');
39-
projectAdditionalProperties[split[0]] = split[1];
40+
projectAdditionalProperties[propertyElement.Name.LocalName] = propertyElement.Value;
4041
}
4142

4243
var referencedProjectIsExecutable = MSBuildUtilities.ConvertStringToBool(projectAdditionalProperties["_IsExecutable"]);

0 commit comments

Comments
 (0)