Dopo aver esaminato di nuovo il tuo commento mi sono reso conto di non aver interpretato correttamente ciò di cui avevi davvero bisogno. Questo è un problema interessante che hai tra le mani.
Se non ti dispiace modificare il file di progetto stesso, potresti essere in grado di ottenere un bel vicino a per quello che vuoi. C'è un articolo FileWrites che tiene traccia di tutti i file che sono stati scritti durante il processo di compilazione. Per iniziare a giocare con questo modificare il file di progetto di avere questo obiettivo AfterBuild
<Target Name="AfterBuild">
<Message Text="FileWrites: @(FileWrites)" Importance="high"/>
</Target>
Ci sono alcuni problemi con questo approccio così
- È necessario modificare il file di progetto stesso
- Ciò conterrà i file scritti nella directory di output intermedio (ovvero obj) e la directory di output (ovvero bin)
- Se ci sono costruire le personalizzazioni, essi non sono tenuti a scrivere a questa voce
Si potrebbe pensare che si potrebbe risolvere il primo problema con il MSBuild: Find Many Project References tecnica e uscita la voce FileWrites dopo aver fatto una generazione. Questo funzionerà solo se il file wrapper proj è stato inserito nella stessa cartella del progetto originale stesso perché tutti gli elementi all'interno di un file .csproj sono dichiarati con un percorso relativo.Quindi ci va per la maggior parte.
È possibile superare la seconda limitazione utilizzando l'attività FindUnderPath per ottenere solo i file inseriti nella cartella OutputPath.
Quello che potresti fare ma non è realmente affidabile è esaminare l'OutputPath all'inizio della compilazione e poi ancora una volta alla fine della build e vedere cosa è stato aggiunto. Diciamo che si mette i file originali in un elemento startfile e alla fine della compilazione mettono tutti i file in una voce denominata EndFiles si potrebbe il fai:
<Target Name="SomeTargetHere">
<ItemGroup>
<FilesWritten Include="@(EndFiles)" />
<FilesWritten Remove="@(StartFiles)"/>
</ItemGroup>
<!-- Now FilesWritten contains the difference between EndFiles & StartFiles -->
</Target>
Insomma io non sono sicuro se c'è una buona soluzione che non comporta né un'attività personalizzata o un :(logger personalizzato
Sayed Ibrahim Hashimi
My Book:. Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build
fonte
2009-07-03 04:06:59
Grazie per la risposta dettagliata. –