我正在使用下面的代码在cake脚本中编译我的项目,我想在文本文件中获取构建日志。
if(IsRunningOnWindows())
{
// Use MSBuild
foreach(string currenproject in projectslocation)
{
MSBuild(currenproject, new MSBuildSettings()
.SetConfiguration(configuration)
.SetVerbosity(Verbosity.Minimal));
}
}
这可以创建构建日志文件吗?
答案 0 :(得分:5)
来到Cake的下一个版本(0.17.0)(希望我们在本周末发布)我们实现了这个feature request,它允许使用一个新的扩展方法,允许你通过在MSBuildFileLogger。此扩展方法将阻止进入ArgumentCustomization路由。
这应该允许你这样的事情:
MSBuild("./myproject.sln", new MSBuildSettings()
.AddFileLogger(new MSBuildFileLogger {
LogFile = "./errors.txt",
MSBuildFileLoggerOutput = MSBuildFileLoggerOutput.ErrorsOnly
});
今天你可以使用Cake的MyGet feed获得预发布的v0.17.0版本的Cake。
如果你正在使用nuget CLI来安装Cake,就像default bootstrapper中所做的那样,你将-Source https://www.myget.org/F/cake/api/v3/index.json
添加到nuget install
语句。
然后:
如果您使用package.config
固定Cake版本,请指定版本0.17.0-alpha0092
或更高版本。
如果仅使用Cake
软件包ID进行安装,则只需添加-PreRelease
即可从Feed中获取最新版本,也可以指定-Version 0.17.0-alpha009
参数。< / p>
答案 1 :(得分:2)
您可以使用WithLogger(MSBuildSettings, string loggerAssembly, string loggerClass, string loggerParameters) MSBuildSettings扩展方法,该方法可用于指定自定义MSBuild日志记录。
目前没有可用的MSBuild标准文件记录器设置,但您仍然可以使用ArgumentCustomization使用该设置。
if(IsRunningOnWindows())
{
DirectoryPath logPath = MakeAbsolute(Directory("./logfiles"));
// Use MSBuild
foreach(string currenproject in projectslocation)
{
FilePath logFile = logPath.CombineWithFilePath(string.Format(
"{0}.log",
currenproject));
MSBuild(currenproject, new MSBuildSettings {
ArgumentCustomization = args=>args.Append(
"/flp:\"logfile={0};verbosity={1}\"",
logFile.FullPath,
Verbosity.Diagnostic
)
}.SetConfiguration(configuration)
.SetVerbosity(Verbosity.Minimal));
}
}