From 1085723e9e5e3d4edf17805b8dc731ba688246a9 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Fri, 1 Aug 2025 01:05:06 +1000 Subject: [PATCH] all buttons --- .../Features/Build/BuildService.cs | 19 +++++++++++++++++-- src/SharpIDE.Photino/Layout/MainLayout.razor | 13 +++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/SharpIDE.Application/Features/Build/BuildService.cs b/src/SharpIDE.Application/Features/Build/BuildService.cs index 6eae20a..6e9f864 100644 --- a/src/SharpIDE.Application/Features/Build/BuildService.cs +++ b/src/SharpIDE.Application/Features/Build/BuildService.cs @@ -5,9 +5,16 @@ using Microsoft.Build.Logging; namespace SharpIDE.Application.Features.Build; +public enum BuildType +{ + Build, + Rebuild, + Clean, + Restore +} public class BuildService { - public async Task BuildSolutionAsync(string solutionFilePath) + public async Task MsBuildSolutionAsync(string solutionFilePath, BuildType buildType = BuildType.Build) { var buildParameters = new BuildParameters { @@ -17,11 +24,19 @@ public class BuildService 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( projectFullPath : solutionFilePath, globalProperties: new Dictionary(), toolsVersion: null, - targetsToBuild: ["Restore", "Build"], + targetsToBuild: targetsToBuild, hostServices: null, flags: BuildRequestDataFlags.None); diff --git a/src/SharpIDE.Photino/Layout/MainLayout.razor b/src/SharpIDE.Photino/Layout/MainLayout.razor index 5aca849..6b98576 100644 --- a/src/SharpIDE.Photino/Layout/MainLayout.razor +++ b/src/SharpIDE.Photino/Layout/MainLayout.razor @@ -11,8 +11,9 @@ Build - Rebuild - Clean + Rebuild + Clean + Restore @@ -59,8 +60,12 @@ _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); } }