actualización
Como Greg menciones en los comentarios a continuación, MSBuild puede escribir a un archivo de registro a la vez que dar salida a la consola fuera de la caja.
MSBuild [options] /filelogger /fileloggerparameters:LogFile=MSBuildLog.txt
intente lo siguiente sencillo programa C#. Tomará el STDIN redirigido (Console.In
) y lo escribirá en uno o más archivos y 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());
}
}
}
lo uso para redirigir la salida de un archivo por lotes de MSBuild en el disco mientras todavía dar salida a la ventana de la consola.
Usage: MSBuild [options] | RedirectToFile.exe MSBuildLog.txt
'ReadBlock()' no es necesario para devolver siempre el búfer completo. Debería verificar en su lugar 'bytesRead> 0'. – svick
+1 esto funciona bastante bien, (a pesar de ser un tanto espástico acerca de cómo se imprime en la pantalla) pero desafortunadamente los colores de msbuild se pierden. ¿Alguna idea de cómo preservarlos? – user420667
Usando el programa anterior, no hay forma de preservar los colores de salida de la consola. Si desea un registro adicional desde MSBuild, eche un vistazo a la opción 'msbuild.exe/logger', http://msdn.microsoft.com/en-us/library/ms171470.aspx – Dennis