2010-11-10 30 views
2

如果我从喜欢修剪的MSBuild FileLogger输出

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

我得到这个日志文件的命令行编译这个2007年德尔福项目

program MyProject; 

{$APPTYPE CONSOLE} 

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

begin 
    Test; 
end. 

 
    __________________________________________________ 
    Projekt C:\Documents and Settings\pcbs1251\My Documents\RAD Studio\Projekte\MyProject\MyProject.dproj (Rebuild-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 
    Copyright (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 : warning : MyProject.dpr(9) Warnung: W1036 Variable 'i' ist möglicherweise nicht initialisiert worden 
    MyProject.dpr(9) Warnung: W1036 Variable 'i' ist möglicherweise nicht initialisiert worden 

    17 Zeilen, 0.00 Sekunden, 11016 Byte-Code, 12156 Byte-Daten. 
    Erstellen des Projekts MyProject.dproj beendet. 

现在我想将其修整为

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

是否有任何FileLoggerParameters来做到这一点?

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

+0

你能给我们多一点情景吗?你想在哪里看到这个输出? – 2010-11-10 17:51:38

+0

@Jay:以“Erstellen ... beendet”结尾的块。是FileLogger当前写入log.txt的内容。我宁愿让它写两行代码块。没有版权,没有摘要,没有重复的警告等。 – 2010-11-11 07:38:09

+0

为什么?你的过程中的下一步是什么? – 2010-11-11 17:34:25

回答

3

我通常使用grep,sed和awk来做这样的事情。

+1

感谢您的回答!看来后面的操作是要走的路。这看起来有些浪费:首先,MSBuild使计算机更难以生成所有多余的输出,并且我必须在之后努力破坏这项工作。 :-) – 2010-11-11 09:39:11

+0

顺便说一句:为什么控制台输出中的错误/警告/提示信息是重复的?我先看到一条彩色线条(例如黄色警告和暗灰色提示),然后是浅灰色线条。这是一个dcc32或MSBuild的东西? – 2010-11-11 09:42:30

+0

我终于写了一个小小的Delphi程序来做到这一点。看起来比在我的批处理文件中加入隐秘的命令行调用更容易。 ;-) – 2010-11-11 13:07:12

2

尝试msbuild /v:m。这将msbuild命令行的详细程度设置为“minimal”。它可能会给你更接近你想要的东西。看'msbuild /?'寻求帮助。

许多命令行工具都有'/ nologo'选项可以提供帮助。也许你可以把它传递给dcc。也许你将不得不编辑.targets文件。

+0

谢谢,但是/ v:m似乎没有什么区别,可能是因为我在FileLogger中指定了'verbosity = minimal'。而且我不想惹恼已安装的.Targets文件。 – 2010-11-11 07:45:34