From f4ada22037dc17ee64a40e8261a469632f82a866 Mon Sep 17 00:00:00 2001 From: Jeff Kluge Date: Thu, 12 Nov 2020 09:30:36 -0800 Subject: [PATCH] Fix issue where Targets are not passed through (#216) When a user specifies the Targets metadata on a ProjectReference, they are not passed along to the MSBuild task. Also added a unit test. Fixes #214 --- src/Traversal.UnitTests/TraversalTests.cs | 34 +++++++++++++++++++++++ src/Traversal/Sdk/Sdk.targets | 1 + 2 files changed, 35 insertions(+) diff --git a/src/Traversal.UnitTests/TraversalTests.cs b/src/Traversal.UnitTests/TraversalTests.cs index e8168576..2e8ff6a4 100644 --- a/src/Traversal.UnitTests/TraversalTests.cs +++ b/src/Traversal.UnitTests/TraversalTests.cs @@ -120,6 +120,40 @@ public void IsUsingMicrosoftTraversalSdkSet() usingMicrosoftTraversalSdk.ShouldBe("true", StringCompareShould.IgnoreCase); } + [Theory] + [InlineData(null, "F15898EAC7F347EA9011A752F0F4B81C")] + [InlineData("Build", "F15898EAC7F347EA9011A752F0F4B81C")] + [InlineData("Target1", "7D37800C941546489A320E1B2C0480BC")] + public void ProjectReferenceCanSpecifyTargets(string targets, string expected) + { + ProjectCreator projectA = ProjectCreator.Create( + path: GetTempFile("ProjectA.csproj")) + .Target("Build") + .TaskMessage("F15898EAC7F347EA9011A752F0F4B81C", MessageImportance.High) + .Target("Target1") + .TaskMessage("7D37800C941546489A320E1B2C0480BC", MessageImportance.High) + .Save(); + + ProjectCreator + .Templates + .TraversalProject( + path: GetTempFile("dirs.proj"), + customAction: creator => creator.ItemProjectReference(projectA, metadata: new Dictionary + { + ["Targets"] = targets, + })) + .Save() + .TryBuild(out bool result, out BuildOutput buildOutput); + + result.ShouldBeTrue(); + + buildOutput.Messages.High.ShouldBe( + new[] + { + expected, + }); + } + [Theory] [InlineData("Build")] [InlineData("Clean")] diff --git a/src/Traversal/Sdk/Sdk.targets b/src/Traversal/Sdk/Sdk.targets index 8ccb21f8..b9cbde9e 100644 --- a/src/Traversal/Sdk/Sdk.targets +++ b/src/Traversal/Sdk/Sdk.targets @@ -138,6 +138,7 @@ SkipNonexistentProjects="$(SkipNonexistentProjects)" SkipNonexistentTargets="$(SkipNonexistentTargets)" StopOnFirstFailure="$(StopOnFirstFailure)" + Targets="%(ProjectReference.Targets)" ContinueOnError="$(ContinueOnError)">