Estoy tratando de obtener un resultado simple por tarea ejecutiva 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>
Pero obtenga el siguiente resultado:
echo test output
test output
echo test output
test output
----------------------------------------
----------------------------------------
----------------------------------------
¿Cómo puedo obtener la salida de mi script?
msbuild
exec
msbuild-task
tbicr
fuente
fuente
Respuestas:
¡Buenas noticias para todos! Ahora puede capturar la salida
<Exec>
de .NET 4.5.Me gusta esto:
<Exec ... ConsoleToMSBuild="true"> <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> </Exec>
Simplemente:
ConsoleToMsBuild="true"
a su<Exec>
etiquetaConsoleOutput
parámetro en una<Output>
etiqueta¡Finalmente!
Documentación aquí
fuente
He llegado a un punto en el que estoy tan frustrado con las limitaciones de MSBuild, y las cosas que se supone que funcionan pero no funcionan (al menos no en todos los contextos), que casi siempre que necesito hacer algo con MSBuild , Creo una tarea de compilación personalizada en C #.
Si ninguna de las otras sugerencias funciona, entonces ciertamente podría hacerlo de esa manera.
fuente
Si desea capturar la salida en una estructura similar a una matriz y no en una cadena simple donde las líneas de salida están separadas por un punto y coma, use ItemName en lugar de PropertyName :
<Exec ... ConsoleToMSBuild="true"> <Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" /> </Exec>
fuente
Puede canalizar la salida a un archivo, por así decirlo, y volver a leerlo.
fuente