Refactor BuildService
This commit is contained in:
@@ -0,0 +1,20 @@
|
|||||||
|
using Microsoft.Build.Execution;
|
||||||
|
|
||||||
|
namespace SharpIDE.Application.Features.Build;
|
||||||
|
|
||||||
|
public static class BuildManagerExtensions
|
||||||
|
{
|
||||||
|
public static async Task<BuildResult> BuildAsync(this BuildManager buildManager, BuildParameters buildParameters, BuildRequestData buildRequest)
|
||||||
|
{
|
||||||
|
var buildCompleteTcs = new TaskCompletionSource<BuildResult>();
|
||||||
|
buildManager.BeginBuild(buildParameters);
|
||||||
|
var buildSubmission = buildManager.PendBuildRequest(buildRequest);
|
||||||
|
buildSubmission.ExecuteAsync(test =>
|
||||||
|
{
|
||||||
|
buildCompleteTcs.SetResult(test.BuildResult!);
|
||||||
|
}, null);
|
||||||
|
var buildResult = await buildCompleteTcs.Task.ConfigureAwait(false);
|
||||||
|
buildManager.EndBuild();
|
||||||
|
return buildResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,23 +48,11 @@ public class BuildService
|
|||||||
hostServices: null,
|
hostServices: null,
|
||||||
flags: BuildRequestDataFlags.None);
|
flags: BuildRequestDataFlags.None);
|
||||||
|
|
||||||
await Task.Run(async () =>
|
await BuildStarted.Invoke().ConfigureAwait(false);
|
||||||
{
|
var timer = Stopwatch.StartNew();
|
||||||
await BuildStarted.Invoke().ConfigureAwait(false);
|
var buildResult = await BuildManager.DefaultBuildManager.BuildAsync(buildParameters, buildRequest).ConfigureAwait(false);
|
||||||
var buildCompleteTcs = new TaskCompletionSource<BuildResult>();
|
timer.Stop();
|
||||||
BuildManager.DefaultBuildManager.BeginBuild(buildParameters);
|
Console.WriteLine($"Build result: {buildResult.OverallResult} in {timer.ElapsedMilliseconds}ms");
|
||||||
var buildResult2 = BuildManager.DefaultBuildManager.PendBuildRequest(buildRequest);
|
|
||||||
var timer = Stopwatch.StartNew();
|
|
||||||
buildResult2.ExecuteAsync((BuildSubmission test) =>
|
|
||||||
{
|
|
||||||
buildCompleteTcs.SetResult(test.BuildResult!);
|
|
||||||
}, null);
|
|
||||||
//var buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest); // This is a convenience to essentially do the same thing.
|
|
||||||
var buildResult = await buildCompleteTcs.Task.ConfigureAwait(false);
|
|
||||||
timer.Stop();
|
|
||||||
BuildManager.DefaultBuildManager.EndBuild();
|
|
||||||
Console.WriteLine($"Build result: {buildResult.OverallResult} in {timer.ElapsedMilliseconds}ms");
|
|
||||||
}).ConfigureAwait(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string[] TargetsToBuild(BuildType buildType)
|
private static string[] TargetsToBuild(BuildType buildType)
|
||||||
|
|||||||
Reference in New Issue
Block a user