Después de ver tu comentario de nuevo me di cuenta de que malinterpreté lo que realmente necesitabas. Este es un problema interesante que tienes en tus manos.
Si no te importa editar el archivo del proyecto en sí mismo, puedes obtener cerca de a lo que quieras. Hay un elemento FileWrites que realiza un seguimiento de todos los archivos que se escribieron durante el proceso de compilación. Para empezar a jugar con esta edición del archivo de proyecto para tener este AfterBuild objetivo
<Target Name="AfterBuild">
<Message Text="FileWrites: @(FileWrites)" Importance="high"/>
</Target>
Hay algunos problemas con este enfoque, así
- Tiene que editar el archivo de proyecto en sí
- Esto contendrá los archivos escritos en el directorio de salida intermedio (es decir, obj) y el directorio de salida (es decir, bin)
- Si hay construir personalizaciones, que no están obligados a escribir en este artículo
Se podría pensar que se podía resolver el primer problema con el MSBuild: Find Many Project References técnica y la salida del elemento FileWrites después de hacer una compilación. Esto solo funcionará si el archivo de proyecto de envoltura se colocó en la misma carpeta que el proyecto original en sí porque todos los elementos dentro de un archivo .csproj se declaran con una ruta relativa.Así que ahí va eso en su mayor parte.
Puede superar la segunda limitación utilizando la tarea FindUnderPath para obtener solo los archivos colocados en la carpeta OutputPath.
Lo que podría hacer, pero no es realmente confiable, es examinar OutputPath al comienzo de la compilación y, una vez más, al final de la compilación, ver lo que se agregó. Digamos que usted pone los archivos originales en una ficheros de inicio del artículo y al final de la acumulación de poner todos los archivos en un artículo llamado EndFiles se podía el do:
<Target Name="SomeTargetHere">
<ItemGroup>
<FilesWritten Include="@(EndFiles)" />
<FilesWritten Remove="@(StartFiles)"/>
</ItemGroup>
<!-- Now FilesWritten contains the difference between EndFiles & StartFiles -->
</Target>
En resumen no estoy seguro de si hay una buena solución que no implique ya sea una tarea personalizada o una :(anotador personalizado
Sayed Ibrahim Hashimi
Mi libro:. Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build
Gracias por la respuesta detallada. –