コマンドラインで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の有益な色が失われます。私はそれらを救いたいです。
私は賞品を開いたことがわかります。この質問のどの側面がHans Passantの回答で十分にカバーしていないか教えてください。それとも、彼に賞金を授与し始めたのですか? –
@CodyGray Hansはそれは不可能だと言います。私はそれが可能であることを望みます。 –
残念ながら、彼は正しいです。 'OutputDataReceived'にこれを行う方法はありません。出力されるのは、色ではなくテキストです。色を使いたい場合は、データを解析して手動で適用する必要があります。 [VSColorOutput](http://visualstudiogallery.msdn.microsoft.com/f4d9c2b5-d6d7-4543-a7a5-2d7ebabc2496)拡張機能に興味があります。 –