自定义构建日志输出,过滤不想看到的无关日志
IEventSource Interface (Microsoft.Build.Framework) | Microsoft Docs
using System;using Microsoft.Build.Utilities;using Microsoft.Build.Framework;
public class CustomLogger : Logger{ private int warnings = 0; private int errors = 0;
public override void Initialize(IEventSource eventSource) { eventSource.WarningRaised += (s, e) => ++warnings; eventSource.ErrorRaised += (s, e) => { ++errors; string line = String.Format("ERROR {0}({1},{2}): ", e.File, e.LineNumber, e.ColumnNumber); Console.WriteLine(line + e.Message); };
eventSource.BuildFinished += (s, e) => { Console.WriteLine(errors == 0 ? "Build succeeded." : "Build failed."); Console.WriteLine(String.Format(" {0} Warning(s)", warnings)); Console.WriteLine(String.Format(" {0} Error(s)", errors)); }; }}
编译自定义日志组件 DLL 的命令:
Terminal window
csc /t:library CustomLogger.cs /reference:Microsoft.Build.Utilities.v4.0.dll;Microsoft.Build.Framework.dll
编译命令(日志配置):
msbuild /logger:CustomLogger.dll /noconsolelogger
编译命令(日志配置),指定 CustomLogger.dll 目录:
msbuild /m /p:Configuration=Release /logger:".\Build\tools\CustomLogger.dll" /noconsolelogger
msbuild 编译安静了很多,没有错误的话,就没有任何输出。
当然,如果只是想仅输出错误,有更简单的方法:
Terminal window
msbuild -m -p:Configuration=Release /consoleloggerparameters:ErrorsOnly
使用 /consoleloggerparameters:ErrorsOnly
即可。
P.S.
nuget 命令,可使用 -v q 参数简化输出。
NuGet CLI restore command | Microsoft Docs
参考
MSBuild Command-Line Reference - MSBuild | Microsoft Learn
View, save, and configure build log files - Visual Studio (Windows) | Microsoft Learn
原文链接: https://cloud.tencent.com/developer/article/2481493
本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。