2009-10-05 6 views
18

Tengo un script por lotes al que deseo llamar desde un proyecto MSBuild, y the documentation dice que no puedo usar el resultado del lote (variables de consola/entorno) en el proyecto MSBuild.Recopilación de salidas de una tarea ejecutiva de MSBuild

¿Hay una solución?

+1

Terminé escribiendo una tarea personalizada de MSBuild que hace lo que quiero y devuelvo la salida. – ripper234

+0

Este enlace podría ser útil: http://social.msdn.microsoft.com/Forums/ar/tfsbuild/thread/ef1a0e09-ef66-4ddf-947b-149311182b43 –

+0

¿Podría publicar su tarea personalizada de MDBuild que resolvió su problema, por favor? –

Respuesta

24

Puede redirigir la salida del comando a un archivo usando "> output.txt" y leerlo en una variable.

<PropertyGroup> 
    <OutputFile>$(DropLocation)\$(BuildNumber)\Output.txt</OutputFile> 
</PropertyGroup> 
<Exec Command="dir > &quot;$(OutputFile)&quot;" /> 
<ReadLinesFromFile File="$(OutputFile)"> 
    <Output TaskParameter="Lines" ItemName="OutputLines"/> 
</ReadLinesFromFile> 
<Message Text="@(OutputLines->'%(Identity)', '%0a%0d')" /> 
+4

esto se ve muy raro, ¿por qué se debe escribir un archivo si la salida del comando es solo útil para la lógica MSBuild? Luego tiene que eliminar el archivo más tarde ... – knocte

+1

Las compilaciones que usan lógica como esta se vuelven dolorosas de administrar, pero prefiero que funcione y feo que no funcionar en absoluto. – evanmcdonnal

+2

Aunque estoy de acuerdo en que es un poco descuidado, no es gran cosa agregar la línea MSBuild inmediatamente después de verificar su contenido para que no queden archivos de permanencia. – NightOwl888

Cuestiones relacionadas