diff --git a/src/Microsoft.Build.Utilities.ProjectCreation.UnitTests/BuildTests.cs b/src/Microsoft.Build.Utilities.ProjectCreation.UnitTests/BuildTests.cs index 2fa7f33..9c61af4 100644 --- a/src/Microsoft.Build.Utilities.ProjectCreation.UnitTests/BuildTests.cs +++ b/src/Microsoft.Build.Utilities.ProjectCreation.UnitTests/BuildTests.cs @@ -276,6 +276,52 @@ public void CanRestoreAndBuildMultipleTimes() result.ShouldBeTrue(buildOutput.GetConsoleLog()); } + [Fact] + public void TryBuildWithRestoreAndTargetWithoutBuildOutputRestoresBeforeBuild() + { + string markerPath = Path.Combine(TestRootPath, $"{Guid.NewGuid():N}.restore-marker"); + + ProjectCreator.Create(path: GetTempFileName(".proj")) + .Target("Restore") + .Task( + "WriteLinesToFile", + parameters: new Dictionary + { + ["File"] = markerPath, + ["Lines"] = "restored", + ["Overwrite"] = bool.TrueString, + }) + .Target("Build") + .TaskError("Restore target did not run.", condition: $"!Exists('{markerPath}')") + .Save() + .TryBuild(restore: true, target: "Build", globalProperties: null, out bool result); + + result.ShouldBeTrue(); + } + + [Fact] + public void TryBuildWithRestoreWithoutBuildOutputRestoresBeforeBuild() + { + string markerPath = Path.Combine(TestRootPath, $"{Guid.NewGuid():N}.restore-marker"); + + ProjectCreator.Create(path: GetTempFileName(".proj"), defaultTargets: "Build") + .Target("Restore") + .Task( + "WriteLinesToFile", + parameters: new Dictionary + { + ["File"] = markerPath, + ["Lines"] = "restored", + ["Overwrite"] = bool.TrueString, + }) + .Target("Build") + .TaskError("Restore target did not run.", condition: $"!Exists('{markerPath}')") + .Save() + .TryBuild(restore: true, globalProperties: null, out bool result); + + result.ShouldBeTrue(); + } + [Fact] public void ProjectCollectionLoggersWork() { diff --git a/src/Microsoft.Build.Utilities.ProjectCreation/ProjectCreator.Build.cs b/src/Microsoft.Build.Utilities.ProjectCreation/ProjectCreator.Build.cs index 4b93de1..f5229fe 100644 --- a/src/Microsoft.Build.Utilities.ProjectCreation/ProjectCreator.Build.cs +++ b/src/Microsoft.Build.Utilities.ProjectCreation/ProjectCreator.Build.cs @@ -59,7 +59,7 @@ public ProjectCreator TryBuild(bool restore, string target, IDictionary? global { BuildOutput buildOutput = BuildOutput.Create(); - result = Build(restore: false, targets: null, globalProperties, buildOutput, out _); + result = Build(restore, targets: null, globalProperties, buildOutput, out _); return this; }