2010-05-05 15 views

Respuesta

12

El comando dos type podría hacerlo.

<Target Name="ExecProgramAndOutputToStdOut"> 
    <Exec Command="YourProgram.exe"/> 

    <Exec Command="type output_file"/> 
</Target> 
+0

Lo importante aquí (que no sabía) es que siempre Exec (?) Utiliza cmd.exe, lo que significa que comandos internos (tales como 'tipo') y la redirección funcionan dentro de' '. –

0

Debería poder hacer algo como esto en su script de compilación (tenga en cuenta que estoy usando el comando cat que viene con cygwin aquí para generar el contenido del archivo). Se puede cambiar el destino de lo que sea apropiado dependiendo de si desea que el elemento se ejecute en su proceso de construcción:

<Target Name="AfterGet"> 
    <Exec Command="cat your_file" /> 
</Target> 

Si es necesario instalar cygwin en su servidor, lo puede conseguir here. No sé de un comando dos nativo para repetir el contenido del archivo, pero puede haber uno.

+0

utilizar Windows 'tipo' para Linux 'gato' –

5

Si sabe donde está el archivo que fue escrito para que pueda utilizar la tarea ReadLinesFromFile y luego registrar todos los mensajes. Por ejemplo, eche un vistazo al archivo de proyecto a continuación.

<Project DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
     <_File>$(MSBuildProjectFullPath)</_File> 
    </PropertyGroup> 
    <Target Name="Demo"> 
     <ReadLinesFromFile File="$(_File)"> 
      <Output ItemName="_FileContents" TaskParameter="Lines"/> 
     </ReadLinesFromFile> 

     <Message Text="File contents: '$(MSBuildProjectFullPath)'"/> 
     <!-- Prints one after another with a ';' between each line --> 
     <Message Text="@(_FileContents)"/> 

     <Message Text="-------------"/> 
     <!-- Prints one after another with each on its own line --> 
     <Message Text="%(_FileContents.Identity)"/> 
    </Target> 
</Project> 

Este archivo se lee el archivo actual (a través de $(MSBuildProjectFullPath)) e imprime los resultados a la consola. He mostrado cómo imprimirlo de 2 maneras, una muestra el; valores separados y el otro muestra uno en una línea propia. Tenga en cuenta que la tarea ReadLinesFromFile no conserva el espacio en blanco inicial (y tal vez incluso el final).

Aquí está el resultado cuando ejecuto el objetivo de demostración.

C:\Data\Development\My Code\Community\MSBuild>msbuild ReadLines.proj /nologo 
Build started 5/6/2010 6:29:43 PM. 
Project "C:\Data\Development\My Code\Community\MSBuild\ReadLines.proj" on node 1 (default targets). 
Demo: 
    File contents: 'C:\Data\Development\My Code\Community\MSBuild\ReadLines.proj' 
    <Project DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">;<PropertyGroup>;<_Fi 
    le>$(MSBuildProjectFullPath)</_File>;</PropertyGroup>;<Target Name="Demo">;<ReadLinesFromFile File="$(_File)">;< 
    Output ItemName="_FileContents" TaskParameter="Lines"/>;</ReadLinesFromFile>;<Message Text="File contents: '$(MS 
    BuildProjectFullPath)'"/>;<!-- Prints one after another with a ';' between each line -->;<Message Text="@(_FileC 
    ontents)"/>;<Message Text="-------------"/>;<!-- Prints one after another with each on its own line -->;<Message 
    Text="%(_FileContents.Identity)"/>;</Target>;</Project> 
    ------------- 
    <Project DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <_File>$(MSBuildProjectFullPath)</_File> 
    </PropertyGroup> 
    <Target Name="Demo"> 
    <ReadLinesFromFile File="$(_File)"> 
    <Output ItemName="_FileContents" TaskParameter="Lines"/> 
    </ReadLinesFromFile> 
    <Message Text="File contents: '$(MSBuildProjectFullPath)'"/> 
    <!-- Prints one after another with a ';' between each line --> 
    <Message Text="@(_FileContents)"/> 
    <Message Text="-------------"/> 
    <!-- Prints one after another with each on its own line --> 
    <Message Text="%(_FileContents.Identity)"/> 
    </Target> 
    </Project> 
Done Building Project "C:\Data\Development\My Code\Community\MSBuild\ReadLines.proj" (default targets). 
Cuestiones relacionadas