Add BuildService
This commit is contained in:
45
src/SharpIDE.Application/Features/Build/BuildService.cs
Normal file
45
src/SharpIDE.Application/Features/Build/BuildService.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using System.Diagnostics;
|
||||
using Microsoft.Build.Execution;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Logging;
|
||||
|
||||
namespace SharpIDE.Application.Features.Build;
|
||||
|
||||
public class BuildService
|
||||
{
|
||||
public async Task BuildSolutionAsync(string solutionFilePath)
|
||||
{
|
||||
var buildParameters = new BuildParameters
|
||||
{
|
||||
Loggers =
|
||||
[
|
||||
//new BinaryLogger { Parameters = "msbuild.binlog" },
|
||||
new ConsoleLogger(LoggerVerbosity.Quiet),
|
||||
],
|
||||
};
|
||||
var buildRequest = new BuildRequestData(
|
||||
projectFullPath : solutionFilePath,
|
||||
globalProperties: new Dictionary<string, string?>(),
|
||||
toolsVersion: null,
|
||||
targetsToBuild: ["Restore", "Build"],
|
||||
hostServices: null,
|
||||
flags: BuildRequestDataFlags.None);
|
||||
|
||||
await Task.Run(() =>
|
||||
{
|
||||
var timer = Stopwatch.StartNew();
|
||||
var buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest);
|
||||
timer.Stop();
|
||||
Console.WriteLine($"Build result: {buildResult.OverallResult} in {timer.ElapsedMilliseconds}ms");
|
||||
}).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
// To build a single project
|
||||
// var solutionFile = GetNodesInSolution.ParseSolutionFileFromPath(_solutionFilePath);
|
||||
// ArgumentNullException.ThrowIfNull(solutionFile);
|
||||
// var projects = GetNodesInSolution.GetCSharpProjectObjectsFromSolutionFile(solutionFile);
|
||||
// var projectRoot = projects.First();
|
||||
// var buildRequest = new BuildRequestData(
|
||||
// ProjectInstance.FromProjectRootElement(projectRoot, new ProjectOptions()),
|
||||
// targetsToBuild: ["Restore", "Build"]);
|
||||
@@ -1,12 +1,8 @@
|
||||
@using Microsoft.Build.Construction
|
||||
@using Microsoft.Build.Definition
|
||||
@using Microsoft.Build.Execution
|
||||
@using Microsoft.Build.Framework
|
||||
@using Microsoft.Build.Logging
|
||||
@using SharpIDE.Application.Features.SolutionDiscovery
|
||||
@using SharpIDE.Application.Features.Build
|
||||
@inherits LayoutComponentBase
|
||||
|
||||
@inject IDialogService DialogService
|
||||
@inject BuildService BuildService
|
||||
|
||||
<MudLayout>
|
||||
<MudAppBar Dense="true">
|
||||
@@ -49,28 +45,6 @@
|
||||
var solutionFilePath = (string)result.Data!;
|
||||
_solutionFilePath = solutionFilePath;
|
||||
|
||||
var buildParameters = new BuildParameters
|
||||
{
|
||||
Loggers =
|
||||
[
|
||||
//new BinaryLogger { Parameters = "msbuild.binlog" },
|
||||
new ConsoleLogger(LoggerVerbosity.Quiet),
|
||||
],
|
||||
};
|
||||
// var solutionFile = GetNodesInSolution.ParseSolutionFileFromPath(_solutionFilePath);
|
||||
// ArgumentNullException.ThrowIfNull(solutionFile);
|
||||
// var projects = GetNodesInSolution.GetCSharpProjectObjectsFromSolutionFile(solutionFile);
|
||||
// var projectRoot = projects.First();
|
||||
// var buildRequest = new BuildRequestData(
|
||||
// ProjectInstance.FromProjectRootElement(projectRoot, new ProjectOptions()),
|
||||
// targetsToBuild: ["Restore", "Build"]);
|
||||
var buildRequest = new BuildRequestData(projectFullPath : _solutionFilePath,
|
||||
globalProperties: new Dictionary<string, string?>(),
|
||||
toolsVersion: null,
|
||||
targetsToBuild: ["Restore", "Build"],
|
||||
hostServices: null,
|
||||
flags: BuildRequestDataFlags.None);
|
||||
var result2 = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest);
|
||||
Console.WriteLine(result2.OverallResult);
|
||||
await BuildService.BuildSolutionAsync(_solutionFilePath);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using Microsoft.Build.Locator;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using MudBlazor.Services;
|
||||
using Photino.Blazor;
|
||||
using SharpIDE.Application.Features.Build;
|
||||
using SharpIDE.Photino.Models;
|
||||
using SharpIDE.Photino.Services;
|
||||
|
||||
@@ -19,6 +20,7 @@ public class Program
|
||||
appBuilder.Services.AddMudServices();
|
||||
appBuilder.Services.AddSingleton<RefreshOpenFileService>();
|
||||
appBuilder.Services.AddSingleton<AppState>();
|
||||
appBuilder.Services.AddSingleton<BuildService>();
|
||||
|
||||
appBuilder.RootComponents.Add<App>("app");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user