Skip to content

Commit 541f96c

Browse files
authored
Add TryRestore method and overloads to TryBuild to have implicit restore (#36)
Fixes #31
1 parent b416692 commit 541f96c

File tree

4 files changed

+266
-62
lines changed

4 files changed

+266
-62
lines changed

src/MSBuildProjectCreator.UnitTests/App.config

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -30,35 +30,6 @@
3030
<assemblyIdentity name="Microsoft.Build.Conversion.Core" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
3131
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
3232
</dependentAssembly>
33-
<!-- Redirects for components dropped by Visual Studio -->
34-
<dependentAssembly>
35-
<assemblyIdentity name="Microsoft.Activities.Build" culture="neutral" publicKeyToken="31bf3856ad364e35" />
36-
<bindingRedirect oldVersion="4.0.0.0" newVersion="16.0.0.0" />
37-
<codeBase version="16.0.0.0" href=".\amd64\Microsoft.Activities.Build.dll" />
38-
</dependentAssembly>
39-
<dependentAssembly>
40-
<assemblyIdentity name="XamlBuildTask" culture="neutral" publicKeyToken="31bf3856ad364e35" />
41-
<bindingRedirect oldVersion="4.0.0.0" newVersion="16.0.0.0" />
42-
<codeBase version="16.0.0.0" href=".\amd64\XamlBuildTask.dll" />
43-
</dependentAssembly>
44-
<dependentAssembly>
45-
<assemblyIdentity name="Microsoft.Build.CPPTasks.Common" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
46-
<bindingRedirect oldVersion="16.0.0.0-16.4.0.0" newVersion="16.4.0.0" />
47-
<codeBase version="16.4.0.0" href="..\..\Microsoft\VC\v160\Microsoft.Build.CPPTasks.Common.dll" />
48-
</dependentAssembly>
49-
<!-- Workaround for crash in C++ CodeAnalysis scenarios due to https://github.com/Microsoft/msbuild/issues/1675 -->
50-
<dependentAssembly>
51-
<assemblyIdentity name="FxCopTask" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
52-
<codeBase version="16.0.0.0" href="..\..\Microsoft\VisualStudio\v16.0\CodeAnalysis\FxCopTask.dll" />
53-
</dependentAssembly>
54-
<dependentAssembly>
55-
<assemblyIdentity name="Microsoft.VisualStudio.CodeAnalysis" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
56-
<codeBase version="16.0.0.0" href="..\..\Microsoft\VisualStudio\v16.0\CodeAnalysis\Microsoft.VisualStudio.CodeAnalysis.dll" />
57-
</dependentAssembly>
58-
<dependentAssembly>
59-
<assemblyIdentity name="Microsoft.VisualStudio.CodeAnalysis.Sdk" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
60-
<codeBase version="16.0.0.0" href="..\..\Microsoft\VisualStudio\v16.0\CodeAnalysis\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll" />
61-
</dependentAssembly>
6233
</assemblyBinding>
6334
</runtime>
6435
</configuration>

src/MSBuildProjectCreator.UnitTests/BuildTests.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,39 @@ public void BuildTargetOutputsTest()
3232

3333
item.Value.Items.Select(i => i.ItemSpec).ShouldBe(new[] { "E32099C7AF4E481885B624E5600C718A", "7F38E64414104C6182F492B535926187" });
3434
}
35+
36+
[Fact]
37+
public void RestoreTargetCanBeRun()
38+
{
39+
ProjectCreator
40+
.Create(Path.Combine(TestRootPath, "project1.proj"))
41+
.Target("Restore")
42+
.TaskMessage("312D2E6ABDDC4735B437A016CED1A68E", Framework.MessageImportance.High, condition: "'$(MSBuildRestoreSessionId)' != ''")
43+
.TaskError("MSBuildRestoreSessionId was not defined", condition: "'$(MSBuildRestoreSessionId)' == ''")
44+
.TryRestore(out bool result, out BuildOutput buildOutput);
45+
46+
result.ShouldBeTrue(buildOutput.GetConsoleLog());
47+
48+
buildOutput.MessageEvents.High.ShouldContain(i => i.Message == "312D2E6ABDDC4735B437A016CED1A68E" && i.Importance == Framework.MessageImportance.High, buildOutput.GetConsoleLog());
49+
}
50+
51+
[Fact]
52+
public void CanRestoreAndBuild()
53+
{
54+
ProjectCreator.Create(
55+
path: GetTempFileName(".csproj"))
56+
.Target("Restore")
57+
.TaskMessage("Restoring...", Framework.MessageImportance.High)
58+
.Target("Build")
59+
.TaskMessage("Building...", Framework.MessageImportance.High)
60+
.Save()
61+
.TryBuild(restore: true, "Build", out bool result, out BuildOutput buildOutput);
62+
63+
result.ShouldBeTrue(buildOutput.GetConsoleLog());
64+
65+
buildOutput.MessageEvents.High.ShouldContain(i => i.Message == "Restoring...", buildOutput.GetConsoleLog());
66+
67+
buildOutput.MessageEvents.High.ShouldContain(i => i.Message == "Building...", buildOutput.GetConsoleLog());
68+
}
3569
}
3670
}

src/MSBuildProjectCreator.UnitTests/SdkCsprojTests.cs

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,34 +32,6 @@ public void CanBuild()
3232
result.ShouldBeTrue(buildOutput.GetConsoleLog());
3333
}
3434

35-
[Fact]
36-
public void CanRestoreAndBuild()
37-
{
38-
ProjectCollection projectCollection = new ProjectCollection(globalProperties: new Dictionary<string, string>
39-
{
40-
["MSBuildRestoreSessionId"] = Guid.NewGuid().ToString("D"),
41-
});
42-
43-
string path = GetTempFileName(".csproj");
44-
45-
const string targetFramework = "net472";
46-
47-
ProjectCreator.Templates.SdkCsproj(
48-
targetFramework: targetFramework,
49-
projectCollection: projectCollection)
50-
.Save(path)
51-
.TryBuild("Restore", out bool restoreResult, out BuildOutput restoreBuildOutput);
52-
53-
restoreResult.ShouldBeTrue(restoreBuildOutput.GetConsoleLog());
54-
55-
ProjectCreator.Templates.SdkCsproj(
56-
targetFramework: targetFramework)
57-
.Save(path)
58-
.TryBuild("Build", out bool result, out BuildOutput buildOutput);
59-
60-
result.ShouldBeTrue(buildOutput.GetConsoleLog());
61-
}
62-
6335
[Fact]
6436
public void CustomSdk()
6537
{

0 commit comments

Comments
 (0)