當我在命令行運行msbuild時,它在控制檯中顯示出漂亮的顏色。如何保持msbuild輸出的顏色?
但是,當我從C#運行它與Process.Start
,輸出顯示爲黑色和白色。我怎樣才能保持顏色?
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();
}
另外,雖然我們在這裏,它的問題比我BeginOutputReadLine
之前運行Process.Start
?任何輸出會丟失嗎?
對於那些感興趣的動機。我工作的一個項目使用定製構建工具(重新發明輪子imho)。它使用msbuild,但在間接的複雜層次之後(上面的簡化模型)。 Msbuild有用的顏色會丟失。我想保存它們。
我看到你已經開了一個賞金不在乎告訴我們什麼方面對這個問題的根本漢斯帕桑特的回答不足以覆蓋?或者你是否開始賞金獎給他? –
@CodyGray漢斯說這是不可能的。我希望它是可能的。 –
不幸的是,他是對的。沒有辦法讓'OutputDataReceived'做到這一點。它輸出的全部是文本,而不是顏色。如果你想要顏色,你必須解析數據並手動應用它們,就像他說的。您可能對[VSColorOutput](http://visualstudiogallery.msdn.microsoft.com/f4d9c2b5-d6d7-4543-a7a5-2d7ebabc2496)擴展程序感興趣,該擴展程序會爲您執行此操作。 –