🐛 Fix Build Output display when published (#5)

This commit is contained in:
Matt Parker
2025-11-13 18:45:03 +10:00
committed by GitHub
parent f0b45115dd
commit 90b2db2f7b
3 changed files with 15 additions and 15 deletions

View File

@@ -24,10 +24,8 @@ public class BuildService(ILogger<BuildService> logger)
public async Task MsBuildAsync(string solutionOrProjectFilePath, BuildType buildType = BuildType.Build, CancellationToken cancellationToken = default) public async Task MsBuildAsync(string solutionOrProjectFilePath, BuildType buildType = BuildType.Build, CancellationToken cancellationToken = default)
{ {
using var _ = SharpIdeOtel.Source.StartActivity($"{nameof(BuildService)}.{nameof(MsBuildAsync)}"); using var _ = SharpIdeOtel.Source.StartActivity($"{nameof(BuildService)}.{nameof(MsBuildAsync)}");
var normalOut = Console.Out;
Console.SetOut(BuildTextWriter); var terminalLogger = InternalTerminalLoggerFactory.CreateLogger(BuildTextWriter);
var terminalLogger = InternalTerminalLoggerFactory.CreateLogger();
Console.SetOut(normalOut);
var nodesToBuildWith = GetBuildNodeCount(Environment.ProcessorCount); var nodesToBuildWith = GetBuildNodeCount(Environment.ProcessorCount);
var buildParameters = new BuildParameters var buildParameters = new BuildParameters

View File

@@ -1,24 +1,25 @@
using Microsoft.Build.Framework; using Ardalis.GuardClauses;
using Microsoft.Build.Framework;
using Microsoft.Build.Logging; using Microsoft.Build.Logging;
namespace SharpIDE.Application.Features.Logging; namespace SharpIDE.Application.Features.Logging;
public class InternalTerminalLoggerFactory 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; return logger;
} }
private static ILogger CreateLogger(string parameters, LoggerVerbosity loggerVerbosity) private static ILogger CreateLogger(string parameters, LoggerVerbosity loggerVerbosity, TextWriter output)
{ {
string[]? args = []; //var logger = TerminalLogger.CreateTerminalOrConsoleLogger(args, supportsAnsi, outputIsScreen, originalConsoleMode);
bool supportsAnsi = true; var terminal = new Terminal(output);
bool outputIsScreen = true; var logger = new TerminalLogger(terminal);
uint? originalConsoleMode = 0x0007; var field = typeof(TerminalLogger).GetField("_manualRefresh", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
Guard.Against.Null(field, nameof(field));
var logger = TerminalLogger.CreateTerminalOrConsoleLogger(args, supportsAnsi, outputIsScreen, originalConsoleMode); field.SetValue(logger, false);
logger.Parameters = parameters; logger.Parameters = parameters;
logger.Verbosity = loggerVerbosity; logger.Verbosity = loggerVerbosity;

View File

@@ -19,8 +19,9 @@
<Publicize Include="Microsoft.CodeAnalysis.Workspaces" /> <Publicize Include="Microsoft.CodeAnalysis.Workspaces" />
<Publicize Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" /> <Publicize Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" />
<Publicize Include="Microsoft.VisualStudio.Shared.VSCodeDebugProtocol" IncludeCompilerGeneratedMembers="false" /> <Publicize Include="Microsoft.VisualStudio.Shared.VSCodeDebugProtocol" IncludeCompilerGeneratedMembers="false" />
<Publicize Include="Microsoft.Build" MemberPattern="^Microsoft.Build.Logging\.TerminalLogger\..*" /> <Publicize Include="Microsoft.Build" MemberPattern="^Microsoft\.Build\.Logging\.(TerminalLogger|Terminal)\..*" />
<DoNotPublicize Include="Microsoft.CodeAnalysis.Workspaces:System.Linq.RoslynEnumerableExtensions" /> <DoNotPublicize Include="Microsoft.CodeAnalysis.Workspaces:System.Linq.RoslynEnumerableExtensions" />
<DoNotPublicize Include="Microsoft.Build:Microsoft.CodeAnalysis.ICollectionExtensions" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>