Массив MSBuild ITaskItem устарел
Я создаю пользовательскую задачу ITask для MSBuild, которая загружает выходные файлы моей сборки. Я использую проект веб-развертывания для публикации моего приложения и подключения к цели AfterBuild для выполнения своей пользовательской работы.
Если я добавляю файл в свое веб-приложение, то при первом выполнении сборки моя пользовательская задача не распознает недавно добавленный файл. Для того, чтобы этот файл появился в моем массиве ITaskItems, я должен сначала выполнить сборку с удаленной целью "AfterBuild", а затем запустить сборку снова с моей "Послестроительной" целью на месте.
Вот как выглядит мой файл сборки:
<ItemGroup>
<PublishContent Include="$(OutputPath)**" />
</ItemGroup>
<Target Name="AfterBuild">
<UploadTask FilesToPublish="@(PublishContent)" />
</Target>
Список в @(PublishContent), по-видимому, инициализируется в начале сборки вместо того, чтобы отражать любые изменения, которые могли бы иметь место в самом процессе сборки.
Есть идеи?
Спасибо
1 ответ:
Ваша ItemGroup будет оцениваться при первой загрузке файла проекта (при первом открытии Visual Studio или при "выгрузке" и "перезагрузке" проекта в обозревателе решений).
Что вам, вероятно, нужно, так это создать ItemGroup в качестве задачи в вашей цели "AfterBuild". Пример:
<CreateItem Include="$(OutputPath)\**"> <Output TaskParameter="Include" ItemName="OutputFiles"/> </CreateItem>
Затем:
<Target Name="AfterBuild"> <UploadTask FilesToPublish="@(OutputFiles)" /> </Target>