अद्यतन
ग्रेग के रूप में नीचे टिप्पणी में उल्लेख है, MSBuild एक लॉग फ़ाइल के लिए बाहर लिख सकते हैं जबकि यह भी बॉक्स से बाहर सांत्वना देने outputting।
MSBuild [options] /filelogger /fileloggerparameters:LogFile=MSBuildLog.txt
निम्नलिखित सरल सी # कार्यक्रम की कोशिश करो। यह पुनर्निर्देशित STDIN (Console.In
) ले जाएगा और इसे एक या अधिक फ़ाइलों और STDOUT (Console.Out
) पर लिखें।
using System;
using System.Collections.Generic;
using System.IO;
namespace RedirectToFile
{
class Program
{
static void Main(string[] args)
{
var buffer = new char[100];
var outputs = new List<TextWriter>();
foreach (var file in args)
outputs.Add(new StreamWriter(file));
outputs.Add(Console.Out);
int bytesRead;
do
{
bytesRead = Console.In.ReadBlock(buffer, 0, buffer.Length);
outputs.ForEach(o => o.Write(buffer, 0, bytesRead));
} while (bytesRead == buffer.Length);
outputs.ForEach(o => o.Close());
}
}
}
मैं इसका इस्तेमाल जबकि अभी भी कंसोल विंडो के लिए outputting डिस्क के लिए एक MSBuild बैच फ़ाइल से उत्पादन को अंतरित करें।
Usage: MSBuild [options] | RedirectToFile.exe MSBuildLog.txt
'रीडब्लॉक()' को हमेशा पूरे बफर को पूर्ण करने की आवश्यकता नहीं है। आपको इसके बजाय 'बाइट्स रीड> 0' की जांच करनी चाहिए। – svick
+1 यह बहुत अच्छी तरह से काम करता है, (यह स्क्रीन पर प्रिंट करने के बारे में कुछ हद तक शानदार है) लेकिन दुर्भाग्यवश एमएसबिल्ड के रंग खो गए हैं। कोई विचार है कि उनको कैसे संरक्षित किया जाए? – user420667
उपर्युक्त प्रोग्राम का उपयोग करके, कंसोल आउटपुट रंगों को संरक्षित करने का कोई तरीका नहीं है। यदि MSBuild से अतिरिक्त लॉगिंग चाहते हैं तो 'msbuild.exe/logger' विकल्प' पर एक नज़र डालें, http://msdn.microsoft.com/en-us/library/ms171470.aspx – Dennis