2012-01-20 3 views
67

Sto cercando di ottenere l'output semplice da compito exec con msbuild:Come arrivare uscita compito exec con msbuild

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="Test"> 
    <Exec Command="echo test output"> 
     <Output TaskParameter="Outputs" ItemName="Test1" /> 
    </Exec> 
    <Exec Command="echo test output"> 
     <Output TaskParameter="Outputs" PropertyName="Test2" /> 
    </Exec> 
    <Message Text="----------------------------------------"/> 
    <Message Text="@(Test1)"/> 
    <Message Text="----------------------------------------"/> 
    <Message Text="$(Test2)"/> 
    <Message Text="----------------------------------------"/> 
    </Target> 
</Project> 

Ma ottenere l'output seguente:

echo test output 
    test output 
    echo test output 
    test output 
    ---------------------------------------- 
    ---------------------------------------- 
    ---------------------------------------- 

Come posso ottenere l'uscita dal mio sceneggiatura?

+1

possibile duplicato [uscite Raccolta da un compito MSBuild exec] (http://stackoverflow.com/questions/1519177/gathering-outputs-from-an-msbuild-exec-task) –

+0

sembra sii vero, grazie mi mancano le informazioni sulla documentazione – tbicr

+1

In genere la documentazione non riguarda ciò che non è possibile, ma ciò che è. Detto questo, la tua domanda sembra essere comune, quindi forse dovresti aggiungere "contenuto della community" appropriato e quindi migliorare la documentazione MSDN. –

risposta

5

Sono arrivato al punto in cui sono così frustrato dalle limitazioni di MSBuild e dalle cose che dovrebbero funzionare ma non (almeno non in ogni contesto), che praticamente ogni volta che ho bisogno di fare qualsiasi cosa con MSBuild, creo un'attività di compilazione personalizzata in C#.

Se nessuno degli altri suggerimenti funziona, si potrebbe certamente farlo in questo modo.

+2

Sento il tuo dolore - sebbene il mio compito personalizzato sia uno script python. – NetworkBurger

+0

Comprensibile, ma penso che MSBuild sia più di un modo strutturato per reindirizzare le informazioni nelle console di output/errore. Sebbene ritenga che si tratti di un passaggio sopra i file batch –

+1

, so che questo è lento lungo la traccia da quando si è verificato questo problema, ma ho avuto la stessa cosa e risolto risolvendo ToolsVersion = "12.0" nell'elemento root ..spero che questo sia di qualche aiuto :) –

1

È possibile reindirizzare l'output in un file, per così dire, e rileggerlo.

echo test output > somefile.txt 
109

Buone notizie a tutti! È ora possibile acquisire l'output da <Exec> da .NET 4.5.

Ti piace questa:

<Exec ... ConsoleToMSBuild="true"> 
    <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> 
</Exec> 

Semplicemente:

  • Aggiungi ConsoleToMsBuild="true" al tag <Exec>
  • catturare l'output utilizzando il parametro ConsoleOutput in un <Output> tag

Finalmente!

Documentation here

+0

Puoi collegarmi alla documentazione su questo, per favore? –

+2

Oops, ya. È a: http://msdn.microsoft.com/en-us/library/ms124731(v=VS.110).aspx –

+5

Ottengo un errore 'attributo non dichiarato' ... –