Si vous savez où le fichier est qui a été écrit pour vous pouvez utiliser la tâche ReadLinesFromFile puis connectez-vous tous les messages. Par exemple, jetez un oeil au fichier de projet ci-dessous.
<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>
Ce fichier lit le fichier en cours (via $(MSBuildProjectFullPath)
) et imprime les résultats à la console. J'ai montré comment l'imprimer de 2 manières, une montre le; les valeurs séparées et l'autre en montre une sur une ligne qui lui est propre. Notez que la tâche ReadLinesFromFile ne conserve pas d'espace blanc principal (et peut-être même à la fin).
Voici le résultat lorsque j'exécute la cible de démonstration.
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).
La chose importante ici (que je ne savais pas) est que Exec toujours (?) Utilise cmd.exe, ce qui signifie que les commandes intégrées (par exemple, comme 'type') et la redirection fonctionne' '. –