diff --git a/Packages.props b/Packages.props
index 7137d4df..c3ebaa54 100644
--- a/Packages.props
+++ b/Packages.props
@@ -8,7 +8,7 @@
-
+
diff --git a/src/Traversal.UnitTests/CustomProjectCreatorTemplates.cs b/src/Traversal.UnitTests/CustomProjectCreatorTemplates.cs
index baf626f8..161d9c40 100644
--- a/src/Traversal.UnitTests/CustomProjectCreatorTemplates.cs
+++ b/src/Traversal.UnitTests/CustomProjectCreatorTemplates.cs
@@ -13,6 +13,21 @@ public static class CustomProjectCreatorTemplates
{
private static readonly string ThisAssemblyDirectory = Path.GetDirectoryName(typeof(CustomProjectCreatorTemplates).Assembly.Location);
+ public static ProjectCreator ProjectWithBuildOutput(
+ this ProjectCreatorTemplates templates,
+ string target,
+ ProjectCollection projectCollection = null,
+ Action customAction = null)
+ {
+ return ProjectCreator.Templates.SdkCsproj(
+ sdk: String.Empty,
+ projectCreator: customAction,
+ projectCollection: projectCollection)
+ .Target(target, returns: "@(CollectedBuildOutput)")
+ .TargetItemInclude("CollectedBuildOutput", Path.Combine("bin", "$(MSBuildThisFileName).dll"))
+ .Target("Clean");
+ }
+
public static ProjectCreator TraversalProject(
this ProjectCreatorTemplates templates,
string[] projectReferences = null,
diff --git a/src/Traversal.UnitTests/TraversalTests.cs b/src/Traversal.UnitTests/TraversalTests.cs
index 533bf9fc..df922c88 100644
--- a/src/Traversal.UnitTests/TraversalTests.cs
+++ b/src/Traversal.UnitTests/TraversalTests.cs
@@ -19,57 +19,34 @@ namespace Microsoft.Build.Traversal.UnitTests
public class TraversalTests : MSBuildSdkTestBase
{
[Theory]
- [InlineData(null)]
[InlineData("Build")]
- [InlineData("Rebuild")]
+ [InlineData("GetTargetPath")]
public void CollectsProjectReferenceBuildTargetOutputs(string target)
{
- string[] projects = new[]
- {
- GetSkeletonCSProjWithTargetOutputs(@"A\A"),
- GetSkeletonCSProjWithTargetOutputs(@"B\B"),
- }.Select(i => i.FullPath).ToArray();
-
- var subTraversalProject = ProjectCreator
- .Templates
- .TraversalProject(projects, path: GetTempFile(@"dirs\dirs.proj"))
- .Save();
-
- ProjectCreator
- .Create(path: GetTempFile("root.proj"))
- .Target("BuildTraversalProject")
- .Task(
- "MSBuild",
- parameters: new Dictionary
- {
- ["Projects"] = subTraversalProject.FullPath,
- ["Targets"] = "Restore",
- ["Properties"] = $"MSBuildRestoreSessionId={Guid.NewGuid():N}",
- })
- .Task(
- "MSBuild",
- parameters: new Dictionary
+ ProjectCreator traversalProject = ProjectCreator.Templates.TraversalProject(
+ projectReferences: new string[]
{
- ["Projects"] = subTraversalProject.FullPath,
- ["Targets"] = target,
+ ProjectCreator.Templates.ProjectWithBuildOutput(target)
+ .Save(GetTempFile(Path.Combine("A", "A.csproj"))),
+ ProjectCreator.Templates.ProjectWithBuildOutput(target)
+ .Save(GetTempFile(Path.Combine("B", "B.csproj"))),
})
- .TaskOutputItem("TargetOutputs", "CollectedOutputs")
- .TaskMessage("%(CollectedOutputs.Identity)", MessageImportance.High)
- .Save()
- .TryBuild("BuildTraversalProject", out bool _, out BuildOutput buildOutput);
+ .Property("SkipResolvePackageAssets", bool.TrueString)
+ .Target("ResolvePackageAssets")
+ .Save(GetTempFile("dirs.proj"))
+ .TryBuild(target, out bool result, out BuildOutput buildOutput, out IDictionary targetOutputs);
- buildOutput.Messages.High.ShouldContain("A.dll", buildOutput.GetConsoleLog());
- buildOutput.Messages.High.ShouldContain("B.dll", buildOutput.GetConsoleLog());
+ result.ShouldBeTrue(buildOutput.GetConsoleLog());
- ProjectCreator GetSkeletonCSProjWithTargetOutputs(string projectName)
- {
- return ProjectCreator.Templates.SdkCsproj(path: GetTempFile($"{projectName}.csproj"), sdk: string.Empty)
- .Target("Build", returns: "@(TestReturnItem)")
- .TargetItemGroup()
- .TargetItemInclude("TestReturnItem", "$(MSBuildThisFileName).dll")
- .Target("Clean")
- .Save();
- }
+ targetOutputs.ShouldContainKey(target, buildOutput.GetConsoleLog());
+
+ targetOutputs[target].Items.Select(i => i.ItemSpec).ShouldBe(
+ new[]
+ {
+ Path.Combine("bin", "A.dll"),
+ Path.Combine("bin", "B.dll"),
+ },
+ buildOutput.GetConsoleLog());
}
[Fact]
diff --git a/src/Traversal/Sdk/Sdk.targets b/src/Traversal/Sdk/Sdk.targets
index a1e28d18..3ad75345 100644
--- a/src/Traversal/Sdk/Sdk.targets
+++ b/src/Traversal/Sdk/Sdk.targets
@@ -95,6 +95,8 @@
+
+
@@ -236,10 +238,23 @@
ContinueOnError="$([MSBuild]::ValueOrDefault('$(PublishContinueOnError)', '$(ContinueOnError)'))" />
-
-
+
+
+
+
+
+
+