From c7a2b30462bcc1cb8294b24e9dcaa201a6862871 Mon Sep 17 00:00:00 2001 From: Justin Kotalik Date: Thu, 7 May 2020 14:43:06 -0700 Subject: [PATCH] Log from stdout when dotnet publish fails (#456) --- src/Microsoft.Tye.Core/PublishProjectStep.cs | 24 +++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.Tye.Core/PublishProjectStep.cs b/src/Microsoft.Tye.Core/PublishProjectStep.cs index 9c4aee92b..c99d83a5c 100644 --- a/src/Microsoft.Tye.Core/PublishProjectStep.cs +++ b/src/Microsoft.Tye.Core/PublishProjectStep.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.CommandLine.Invocation; using System.IO; using System.Threading.Tasks; @@ -36,18 +37,29 @@ public override async Task ExecuteAsync(OutputContext output, ApplicationBuilder output.WriteDebugLine("Running 'dotnet publish'."); output.WriteCommandLine("dotnet", $"publish \"{project.ProjectFile.FullName}\" -c Release -o \"{outputDirectory.DirectoryPath}\""); - var capture = output.Capture(); - var exitCode = await Process.ExecuteAsync( + + var publishResult = await ProcessUtil.RunAsync( $"dotnet", $"publish \"{project.ProjectFile.FullName}\" -c Release -o \"{outputDirectory.DirectoryPath}\"", project.ProjectFile.DirectoryName, - stdOut: capture.StdOut, - stdErr: capture.StdErr); + throwOnError: false); - output.WriteDebugLine($"Done running 'dotnet publish' exit code: {exitCode}"); - if (exitCode != 0) + output.WriteDebugLine($"Done running 'dotnet publish' exit code: {publishResult.ExitCode}"); + if (publishResult.ExitCode != 0) { outputDirectory.Dispose(); + output.WriteInfoLine($"'dotnet publish' failed. Error:"); + + foreach (var line in publishResult.StandardOutput.Split(Environment.NewLine)) + { + output.WriteInfoLine(line); + } + + foreach (var line in publishResult.StandardError.Split(Environment.NewLine)) + { + output.WriteInfoLine(line); + } + throw new CommandException("'dotnet publish' failed."); }