如何从 msbuild 获取构建日志?
How to get build log from msbuild?
我正在使用下面的代码在 cake 脚本中编译我的项目,我想在文本文件中获取构建日志。
if(IsRunningOnWindows())
{
// Use MSBuild
foreach(string currenproject in projectslocation)
{
MSBuild(currenproject, new MSBuildSettings()
.SetConfiguration(configuration)
.SetVerbosity(Verbosity.Minimal));
}
}
是否可以创建构建日志文件?
您可以使用 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));
}
}
在下一个版本的 Cake (0.17.0) 中(希望我们在本周末发布)我们实现了这个 feature request which allows the usage of a new Extension Method which allows you to pass in an MSBuildFileLogger。此扩展方法将避免需要走 ArgumentCustomization 路线。
这应该允许您执行以下操作:
MSBuild("./myproject.sln", new MSBuildSettings()
.AddFileLogger(new MSBuildFileLogger {
LogFile = "./errors.txt",
MSBuildFileLoggerOutput = MSBuildFileLoggerOutput.ErrorsOnly
});
您今天可以使用 Cake 的 MyGet feed.
获取预发布 v0.17.0 版本的 Cake
如果您像 default bootstrapper 中那样使用 nuget CLI 安装 Cake,则将 -Source https://www.myget.org/F/cake/api/v3/index.json
添加到 nuget install
语句中。
然后:
如果您使用 package.config
固定 Cake 版本,请指定版本 0.17.0-alpha0092
或更高版本。
如果您只使用 Cake
包 ID 安装,那么您要么只添加 -PreRelease
,它将从提要中获取最新版本,要么也指定 -Version 0.17.0-alpha009
参数.
我正在使用下面的代码在 cake 脚本中编译我的项目,我想在文本文件中获取构建日志。
if(IsRunningOnWindows())
{
// Use MSBuild
foreach(string currenproject in projectslocation)
{
MSBuild(currenproject, new MSBuildSettings()
.SetConfiguration(configuration)
.SetVerbosity(Verbosity.Minimal));
}
}
是否可以创建构建日志文件?
您可以使用 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));
}
}
在下一个版本的 Cake (0.17.0) 中(希望我们在本周末发布)我们实现了这个 feature request which allows the usage of a new Extension Method which allows you to pass in an MSBuildFileLogger。此扩展方法将避免需要走 ArgumentCustomization 路线。
这应该允许您执行以下操作:
MSBuild("./myproject.sln", new MSBuildSettings()
.AddFileLogger(new MSBuildFileLogger {
LogFile = "./errors.txt",
MSBuildFileLoggerOutput = MSBuildFileLoggerOutput.ErrorsOnly
});
您今天可以使用 Cake 的 MyGet feed.
获取预发布 v0.17.0 版本的 Cake如果您像 default bootstrapper 中那样使用 nuget CLI 安装 Cake,则将 -Source https://www.myget.org/F/cake/api/v3/index.json
添加到 nuget install
语句中。
然后:
如果您使用
package.config
固定 Cake 版本,请指定版本0.17.0-alpha0092
或更高版本。如果您只使用
Cake
包 ID 安装,那么您要么只添加-PreRelease
,它将从提要中获取最新版本,要么也指定-Version 0.17.0-alpha009
参数.