2010-11-10 3 views
2

Si je compile ce Delphi 2007 projetGarniture MSBuild FileLogger sortie

program MyProject; 

{$APPTYPE CONSOLE} 

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

begin 
    Test; 
end. 

de la ligne de commande comme

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

Je reçois ce fichier journal:

 
    __________________________________________________ 
    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. 

Je voudrais maintenant pour réduire à

 
    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 

Y a-t-il des FileLoggerParameters pour cela? Comme il ne semble pas possible de faire MSBuild ce que je veux, j'ai finalement écrit un petit programme Delphi pour formater la sortie MSBuild à mes besoins.

+0

Pouvez-vous nous donner un peu plus de contexte? Où voulez-vous voir cette sortie? –

+0

@Jay: Le bloc se terminant par "Erstellen ... beendet". est ce que le FileLogger écrit actuellement dans log.txt. Je préfère l'écrire à la place. Aucun copyright, aucun résumé, aucun avertissement en double, etc. –

+0

Pourquoi? Quelle est la prochaine étape de votre processus? –

Répondre

3

J'utilise généralement grep, sed et awk pour faire des choses comme ça.

+1

Merci pour votre réponse! Il semble que la manipulation ultérieure est la voie à suivre. Cela semble un peu inutile: d'abord MSBuild rend l'ordinateur plus dur pour produire toute cette production superflue, et je dois travailler pour détruire ce travail par la suite. :-) –

+0

BTW: Pourquoi les messages d'erreur/avertissement/indice dans la sortie de la console sont-ils dupliqués? Je vois d'abord une ligne colorée (par exemple, des avertissements jaunes et des indices gris foncé) suivie d'une ligne grise claire. Est-ce une chose dcc32 ou MSBuild? –

+0

J'ai finalement écrit un petit programme Delphi pour le faire. Semblait plus facile que de saupoudrer mon fichier batch avec des charges d'invocations cryptiques en ligne de commande. ;-) –

2

Essayez msbuild /v:m. Cela définit la verbosité de la ligne de commande msbuild sur "minimal". Cela peut vous donner quelque chose de plus proche de ce que vous voulez. Voir 'msbuild /?' pour de l'aide à ce sujet.

De nombreux outils de ligne de commande ont une option '/ nologo' qui pourrait aider. Peut-être que vous pouvez obtenir cela passé à dcc. Peut-être que vous devrez éditer les fichiers .targets.

+0

Merci, mais/v: m ne semble pas faire la différence, probablement parce que j'ai spécifié 'verbosity = minimal' au FileLogger. Et je préfère ne pas jouer avec les fichiers .Targets installés. –