【问题标题】:Trim MSBuild FileLogger output修剪 MSBuild FileLogger 输出
【发布时间】:2010-11-10 15:40:22
【问题描述】:

如果我编译这个 Delphi 2007 项目

program MyProject;

{$APPTYPE CONSOLE}

procedure Test;
var
  i: Integer;
begin
  if i = 666 then
    i := 42;
end;

begin
  Test;
end.

从命令行类似

MSBuild MyProject.dproj /t:Rebuild /p:Configuration=Release /l:FileLogger,Microsoft.Build.Engine;logfile=log.txt;verbosity=minimal

我得到这个日志文件:

__________________________________________________ Projekt C:\Documents and Settings\pcbs1251\My Documents\RAD Studio\Projekte\MyProject\MyProject.dproj(重建-Ziel(e)): C:\Program Files\CodeGear\RAD Studio\5.0\bin\dcc32.exe -B -DRELEASE [SNIP] MyProject.dpr CodeGear Delphi für Win32 Compiler-Version 18.5 版权所有 (c) 1983,2007 CodeGear MyProject.dpr(10) Hinweis: H2077 Auf 'i' zugewiesener Wert wird niemals benutzt c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Borland.Delphi.Targets : 警告 : MyProject.dpr(9) 警告: W1036 Variable 'i' ist möglicherweise nicht initialisiert worden MyProject.dpr(9) 警告:W1036 Variable 'i' ist möglicherweise nicht initialisiert worden 17 Zeilen,0.00 Sekunden,11016 字节码,12156 字节日期。 Erstellen des Projekts MyProject.dproj bedet。

现在我想把它修剪成

MyProject.dpr(10) Hinweis: H2077 Auf 'i' zugewiesener Wert wird niemals benutzt MyProject.dpr(9) 警告:W1036 Variable 'i' ist möglicherweise nicht initialisiert worden

是否有任何 FileLoggerParameters 来执行此操作?

更新:由于似乎没有办法让 MSBuild 做我想做的事,我终于写了一个小 Delphi 程序来格式化 MSBuild 输出以满足我的需要。

【问题讨论】:

  • 你能给我们更多的背景信息吗?你想在哪里看到这个输出?
  • @Jay:以“Erstellen ... bedet”结尾的块。是 FileLogger 当前写入 log.txt 的内容。我宁愿让它写两行块。无版权、无摘要、无重复警告等。
  • 为什么?您的流程的下一步是什么?
  • 我想将日志文件存储在版本控制中,因为我们有一些无法摆脱的编译器消息,我希望能够看到该列表的发展。我从手动存储 IDE 消息窗口的输出开始,并希望尽可能接近地复制这种格式。

标签: delphi msbuild


【解决方案1】:

我一般使用 grep、sed 和 awk 来做这样的事情。

【讨论】:

  • 感谢您的回答!看来后续的操纵是要走的路。这似乎有点浪费:首先 MSBuild 使计算机更努力地工作以产生所有多余的输出,然后我必须做一些工作来破坏这些工作。 :-)
  • 顺便说一句:为什么控制台输出中的错误/警告/提示消息重复?我首先看到一条彩色线(例如黄色警告和深灰色提示),然后是一条浅灰色线。这是 dcc32 还是 MSBuild 的东西?
  • 我终于写了一个Delphi小程序来做这件事。似乎比在我的批处理文件中添加大量神秘的命令行调用更容易。 ;-)
【解决方案2】:

试试msbuild /v:m。这会将 msbuild 命令行详细程度设置为“最小”。它可能会给你一些更接近你想要的东西。请参阅“msbuild /?”寻求帮助。

许多命令行工具都有一个可以提供帮助的“/nologo”选项。也许你可以把它传递给 dcc。也许您必须编辑 .targets 文件。

【讨论】:

  • 谢谢,但 /v:m 似乎没有什么不同,可能是因为我为 FileLogger 指定了verbosity=minimal。而且我不想弄乱已安装的 .Targets 文件。
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 2015-02-03
  • 2014-07-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多