我想将以下内容输出到变量中,该怎么办?
var proj = System.Xml.XmlReader.Create(args[1]);
var msbuild = new Microsoft.Build.Evaluation.Project(proj);
msbuild.Build();
答案 0 :(得分:0)
您可以尝试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
,则日志将直接打印到控制台。