После просмотра вашего комментария я снова понял, что неправильно истолковал то, что вам действительно нужно. Это интересная проблема у вас на руках.
Если вы не возражаете отредактировать сам файл проекта, вы можете довольно закрыть до того, что вы хотите. Существует элемент FileWrites , который отслеживает все файлы, которые были записаны в процессе сборки. Чтобы начать играть с этим, отредактируйте файл проекта, чтобы иметь AfterBuild target
<Target Name="AfterBuild">
<Message Text="FileWrites: @(FileWrites)" Importance="high"/>
</Target>
Есть и некоторые проблемы с этим подходом
- Вы должны отредактировать сам файл проекта
- Это будет содержать файлы, записанные в промежуточный выходной каталог (т.е. obj ) и выходной каталог (т.е. bin )
- Если есть настройки сборки, они не обязаны писать в этот элемент
Вы можете подумать, что могли бы решить первую проблему с помощью метода MSBuild: найти множество ссылок на проекты и вывести элемент FileWrites после выполнения сборки. Это будет работать только в том случае, если proj-файл оболочки был помещен в ту же папку, что и сам исходный проект, поскольку все элементы в файле .csproj объявлены с относительным путем. Так что это происходит по большей части.
Вы можете преодолеть второе ограничение, используя задачу FindUnderPath, чтобы получить только файлы, помещенные в папку OutputPath .
То, что вы могли бы сделать, но не совсем надежно, это проверить OutputPath в начале сборки, а затем еще раз в конце сборки и посмотреть, что было добавлено. Допустим, вы поместили исходные файлы в элемент StartFiles и в конце сборки поместили все файлы в элемент с именем EndFiles, который вы могли бы сделать:
<Target Name="SomeTargetHere">
<ItemGroup>
<FilesWritten Include="@(EndFiles)" />
<FilesWritten Remove="@(StartFiles)"/>
</ItemGroup>
<!-- Now FilesWritten contains the difference between EndFiles & StartFiles -->
</Target>
Короче говоря, я не уверен, есть ли хорошее решение, которое не включает ни пользовательскую задачу, ни пользовательский регистратор: (.
сказал Ибрагим Хашими
Моя книга: Внутри Microsoft Build Engine: Использование MSBuild и Team Foundation Build