all buttons

This commit is contained in:
Matt Parker
2025-08-01 01:05:06 +10:00
parent bc17b7285a
commit 1085723e9e
2 changed files with 26 additions and 6 deletions

View File

@@ -5,9 +5,16 @@ using Microsoft.Build.Logging;
namespace SharpIDE.Application.Features.Build; namespace SharpIDE.Application.Features.Build;
public enum BuildType
{
Build,
Rebuild,
Clean,
Restore
}
public class BuildService public class BuildService
{ {
public async Task BuildSolutionAsync(string solutionFilePath) public async Task MsBuildSolutionAsync(string solutionFilePath, BuildType buildType = BuildType.Build)
{ {
var buildParameters = new BuildParameters var buildParameters = new BuildParameters
{ {
@@ -17,11 +24,19 @@ public class BuildService
new ConsoleLogger(LoggerVerbosity.Quiet), new ConsoleLogger(LoggerVerbosity.Quiet),
], ],
}; };
string[] targetsToBuild = buildType switch
{
BuildType.Build => ["Restore", "Build"],
BuildType.Rebuild => ["Restore", "Rebuild"],
BuildType.Clean => ["Clean"],
BuildType.Restore => ["Restore"],
_ => throw new ArgumentOutOfRangeException(nameof(buildType), buildType, null)
};
var buildRequest = new BuildRequestData( var buildRequest = new BuildRequestData(
projectFullPath : solutionFilePath, projectFullPath : solutionFilePath,
globalProperties: new Dictionary<string, string?>(), globalProperties: new Dictionary<string, string?>(),
toolsVersion: null, toolsVersion: null,
targetsToBuild: ["Restore", "Build"], targetsToBuild: targetsToBuild,
hostServices: null, hostServices: null,
flags: BuildRequestDataFlags.None); flags: BuildRequestDataFlags.None);

View File

@@ -11,8 +11,9 @@
<MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="@((e) => DrawerToggle())" /> <MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="@((e) => DrawerToggle())" />
<MudButtonGroup OverrideStyles="false"> <MudButtonGroup OverrideStyles="false">
<MudButton Variant="Variant.Filled" Size="Size.Small" Color="Color.Primary" OnClick="@BuildSolution">Build</MudButton> <MudButton Variant="Variant.Filled" Size="Size.Small" Color="Color.Primary" OnClick="@BuildSolution">Build</MudButton>
<MudButton Variant="Variant.Outlined" Size="Size.Small" Color="Color.Primary">Rebuild</MudButton> <MudButton Variant="Variant.Outlined" Size="Size.Small" Color="Color.Primary" OnClick="@RebuildSolution">Rebuild</MudButton>
<MudButton Variant="Variant.Outlined" Size="Size.Small" Color="Color.Primary">Clean</MudButton> <MudButton Variant="Variant.Outlined" Size="Size.Small" Color="Color.Primary" OnClick="@CleanSolution">Clean</MudButton>
<MudButton Variant="Variant.Outlined" Size="Size.Small" Color="Color.Primary" OnClick="@RestoreSolution">Restore</MudButton>
</MudButtonGroup> </MudButtonGroup>
</MudAppBar> </MudAppBar>
<MudDrawer @bind-Open="@_drawerOpen" Width="400px" ClipMode="DrawerClipMode.Always"> <MudDrawer @bind-Open="@_drawerOpen" Width="400px" ClipMode="DrawerClipMode.Always">
@@ -59,8 +60,12 @@
_solutionModel = solutionModel; _solutionModel = solutionModel;
} }
private async Task BuildSolution() private async Task BuildSolution() => await MsBuildSolution(BuildType.Build);
private async Task RebuildSolution() => await MsBuildSolution(BuildType.Rebuild);
private async Task CleanSolution() => await MsBuildSolution(BuildType.Clean);
private async Task RestoreSolution() => await MsBuildSolution(BuildType.Restore);
private async Task MsBuildSolution(BuildType buildType)
{ {
await BuildService.BuildSolutionAsync(_solutionFilePath!); await BuildService.MsBuildSolutionAsync(_solutionFilePath!, buildType);
} }
} }