From 90b2db2f7bcce768a9e21a93744b1141957c6f61 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Thu, 13 Nov 2025 18:45:03 +1000 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Build=20Output=20display?= =?UTF-8?q?=20when=20published=20(#5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Features/Build/BuildService.cs | 6 ++---- .../Logging/InternalTerminalLoggerFactory.cs | 21 ++++++++++--------- .../SharpIDE.Application.csproj | 3 ++- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/SharpIDE.Application/Features/Build/BuildService.cs b/src/SharpIDE.Application/Features/Build/BuildService.cs index ee6769b..6e61ad6 100644 --- a/src/SharpIDE.Application/Features/Build/BuildService.cs +++ b/src/SharpIDE.Application/Features/Build/BuildService.cs @@ -24,10 +24,8 @@ public class BuildService(ILogger logger) public async Task MsBuildAsync(string solutionOrProjectFilePath, BuildType buildType = BuildType.Build, CancellationToken cancellationToken = default) { using var _ = SharpIdeOtel.Source.StartActivity($"{nameof(BuildService)}.{nameof(MsBuildAsync)}"); - var normalOut = Console.Out; - Console.SetOut(BuildTextWriter); - var terminalLogger = InternalTerminalLoggerFactory.CreateLogger(); - Console.SetOut(normalOut); + + var terminalLogger = InternalTerminalLoggerFactory.CreateLogger(BuildTextWriter); var nodesToBuildWith = GetBuildNodeCount(Environment.ProcessorCount); var buildParameters = new BuildParameters diff --git a/src/SharpIDE.Application/Features/Logging/InternalTerminalLoggerFactory.cs b/src/SharpIDE.Application/Features/Logging/InternalTerminalLoggerFactory.cs index 036ca7e..15f3dfd 100644 --- a/src/SharpIDE.Application/Features/Logging/InternalTerminalLoggerFactory.cs +++ b/src/SharpIDE.Application/Features/Logging/InternalTerminalLoggerFactory.cs @@ -1,24 +1,25 @@ -using Microsoft.Build.Framework; +using Ardalis.GuardClauses; +using Microsoft.Build.Framework; using Microsoft.Build.Logging; namespace SharpIDE.Application.Features.Logging; public class InternalTerminalLoggerFactory { - public static ILogger CreateLogger() + public static ILogger CreateLogger(TextWriter output) { - var logger = CreateLogger("FORCECONSOLECOLOR", LoggerVerbosity.Minimal); + var logger = CreateLogger("FORCECONSOLECOLOR", LoggerVerbosity.Minimal, output); return logger; } - private static ILogger CreateLogger(string parameters, LoggerVerbosity loggerVerbosity) + private static ILogger CreateLogger(string parameters, LoggerVerbosity loggerVerbosity, TextWriter output) { - string[]? args = []; - bool supportsAnsi = true; - bool outputIsScreen = true; - uint? originalConsoleMode = 0x0007; - - var logger = TerminalLogger.CreateTerminalOrConsoleLogger(args, supportsAnsi, outputIsScreen, originalConsoleMode); + //var logger = TerminalLogger.CreateTerminalOrConsoleLogger(args, supportsAnsi, outputIsScreen, originalConsoleMode); + var terminal = new Terminal(output); + var logger = new TerminalLogger(terminal); + var field = typeof(TerminalLogger).GetField("_manualRefresh", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + Guard.Against.Null(field, nameof(field)); + field.SetValue(logger, false); logger.Parameters = parameters; logger.Verbosity = loggerVerbosity; diff --git a/src/SharpIDE.Application/SharpIDE.Application.csproj b/src/SharpIDE.Application/SharpIDE.Application.csproj index 538d95f..ac90e58 100644 --- a/src/SharpIDE.Application/SharpIDE.Application.csproj +++ b/src/SharpIDE.Application/SharpIDE.Application.csproj @@ -19,8 +19,9 @@ - + +