2008-10-07 16 views
6

Utilizo lo siguiente para obtener una lista de los archivos de proyecto que deben compilarse. Cada proyecto se almacena en un subdirectorio del directorio de proyectos.¿Hay alguna tarea de MSBuild que extraiga la ruta dada de un nombre de archivo?

<ItemGroup> 
    <dprs Include="c:\projects\**\*.dpr" />  
</ItemGroup> 

¿Hay alguna tarea que pueda usar para extraer para extraer el directorio en el que se encuentra cada archivo de proyecto? Sé que puedo escribir mi propia tarea para hacer esto, pero esperaba que ya existiera uno y que simplemente no lo haya encontrado todavía.

Respuesta

5

Si entiendo la pregunta correctamente, no debería necesitar una tarea; puede hacerlo con metadatos bien conocidos. ¿Esto hace el truco?

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> 
    <ItemGroup> 
     <dprs Include="c:\projects\**\*.dpr" />  
    </ItemGroup> 

    <Target Name="Default"> 
     <CreateItem Include="%(dprs.RelativeDir)"> 
     <Output ItemName="_ProjectFileLocations" TaskParameter="Include" /> 
     </CreateItem> 
     <Message Text="@(_ProjectFileLocations->'%(FullPath)', '%0D%0A')" /> 
    </Target> 
</Project> 

De las pruebas que ejecuté, no debe aparecer un directorio dos veces en el nuevo grupo de elementos.

+2

Como referencia, puede obtener la lista completa de metadatos de elementos bien conocidos de MSBuild en http://msdn.microsoft.com/en-us/library/ms164313.aspx –

Cuestiones relacionadas