जब मैं कमांड लाइन पर msbuild चलाता हूं तो यह कंसोल में सुंदर रंग दिखाता है।msbuild आउटपुट से रंग कैसे रखे?
हालांकि जब मैं इसे 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
चला सकता हूँ? क्या कोई आउटपुट खो जाएगा?
रुचि रखने वालों के लिए प्रेरणा। एक प्रोजेक्ट जो मैं काम करता हूं, एक कस्टम बिल्ड टूल का उपयोग करता है (व्हील इम्हो का पुन: आविष्कार)। यह msbuild का उपयोग करता है लेकिन संकेत के ठोस परतों (उपरोक्त सरलीकृत मॉडल) के पीछे। Msbuild के सहायक रंग खो गए हैं। मैं उन्हें बचाना चाहता हूं।
मुझे लगता है कि आपने एक उपहार खोला है ... हमें यह बताने की देखभाल करें कि इस सवाल के किस पहलू ने हंस पासंत का जवाब पर्याप्त रूप से कवर नहीं किया? या आपने उसे पुरस्कार देने के लिए बाउंटी शुरू कर दी है? –
@ कोडीग्रे हंस कहते हैं कि यह संभव नहीं है। मैं इसे संभव बनाना चाहता हूं। –
दुर्भाग्यवश, वह सही है। 'आउटपुटडेटा प्राप्त' करने का कोई तरीका नहीं है। यह सब आउटपुट पाठ है, रंग नहीं। यदि आप रंग चाहते हैं, तो आपको डेटा को पार्स करना होगा और उन्हें मैन्युअल रूप से लागू करना होगा, जैसा कि वह कहता है। आपको [VSColorOutput] (http://visualstudiogallery.msdn.microsoft.com/f4d9c2b5-d6d7-4543-a7a5-2d7ebabc2496) एक्सटेंशन में रुचि हो सकती है, जो आपके लिए यह करता है। –