Вы можете попробовать public bool Build (Microsoft.Build.Framework.ILogger logger);
собрать с помощью логгера и получить выход из этого.Проверьте, как использовать регистратор: https://docs.microsoft.com/en-us/dotnet/api/microsoft.build.framework.ilogger?view=netframework-4.7.2
Редактировать: Добавить пример кода
Создать собственный регистратор:
public class ExtendLogger : Microsoft.Build.Logging.ConsoleLogger
{
private string savedLog;
public ExtendLogger(): base()
{
base.WriteHandler = this.SaveLog;
}
void SaveLog(string message)
{
savedLog += message;
}
public string GetLog()
{
return savedLog;
}
}
И использовать это с вашим кодом:
var proj = System.Xml.XmlReader.Create(args[1]);
var msbuild = new Microsoft.Build.Evaluation.Project(proj);
var logger = new ExtendLogger();
bool result = msbuild.Build(logger);
string logString = logger.GetLog();
Console.WriteLine("Build success?: " + result.ToString());
Console.WriteLine(logString );
Console.ReadKey();
Если вы используете Microsoft.Build.Logging.ConsoleLogger
, журналы будут распечатываться непосредственно на консоли.