Po uruchomieniu msbuild w wierszu poleceń pokazuje ładne kolory w konsoli.Jak zachować kolory z pliku msbuild?
Jednak po uruchomieniu go z C# z Process.Start
, wynik jest czarno-biały. Jak mogę zachować kolory?
var info = new ProcessStartInfo("msbuild")
{
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardOutput = true,
};
using (var p = Process.Start(info))
{
p.ErrorDataReceived += (s, e) => Console.Error.WriteLine(e.Data);
p.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
p.BeginErrorReadLine();
p.BeginOutputReadLine();
p.WaitForExit();
}
Ponadto, skoro już tu jesteśmy, to ma znaczenie niż biegnę Process.Start
przed BeginOutputReadLine
? Czy jakiekolwiek dane wyjściowe zostaną utracone?
Motywacja, dla zainteresowanych. Projekt, nad którym pracuję wykorzystuje niestandardowe narzędzie do budowania (ponowne wynalezienie koła imho). Używa msbuild, ale za zawiłymi warstwami pośrednimi (uproszczony model powyżej). Pomocne kolory Msbuild zostaną utracone. Chciałbym je zapisać.
Widzę, że otworzyłeś nagrodę ... Daj nam znać, jaki aspekt tego pytania Hans Passant nie odpowiedział w wystarczającym stopniu? A może zacząłeś nagrodę, by mu ją nagrodzić? –
@CodyGray Hans mówi, że to niemożliwe. Chciałbym, żeby to było możliwe. –
Niestety, ma rację. Nie ma sposobu na zrobienie tego "OutputDataReceived". Wszystkie wyniki to tekst, a nie kolory. Jeśli chcesz kolory, musisz przeanalizować dane i zastosować je ręcznie, tak jak mówi. Być może zainteresuje Cię rozszerzenie [VSColorOutput] (http://visualstudiogallery.msdn.microsoft.com/f4d9c2b5-d6d7-4543-a7a5-2d7ebabc2496), które robi to za Ciebie. –