MSBuild ITaskItem массив устарел - PullRequest
       16

MSBuild ITaskItem массив устарел

2 голосов
/ 23 ноября 2008

Я создаю специальную ITask для MSBuild, которая загружает выходные файлы моей сборки. Я использую проект веб-развертывания, чтобы опубликовать свое приложение, и подключаюсь к цели AfterBuild, чтобы выполнить свою собственную работу.

Если я добавляю файл в свое веб-приложение, то при первом построении моя пользовательская задача не распознает недавно добавленный файл. Чтобы этот файл отображался в моем массиве ITaskItems, я должен сначала выполнить сборку с удаленной целью 'AfterBuild', а затем снова начать сборку с установленной целью 'AfterBuild'.

Вот как выглядит мой файл сборки:

<ItemGroup>
    <PublishContent Include="$(OutputPath)\**" />
</ItemGroup>

<Target Name="AfterBuild">
    <UploadTask FilesToPublish="@(PublishContent)" />
</Target>

Список в @ (PublishContent), по-видимому, инициализируется в начале сборки, а не отражает любые изменения, которые могли произойти в процессе сборки.

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 24 ноября 2008

Ваша ItemGroup будет оценена при первой загрузке файла проекта (когда вы впервые открываете Visual Studio или «выгружаете» и «перезагружаете» проект в обозревателе решений).

Что вам, вероятно, нужно, это создать ItemGroup как задачу в вашей цели AfterBuild. Пример:

<CreateItem Include="$(OutputPath)\**">
      <Output TaskParameter="Include" ItemName="OutputFiles"/>
</CreateItem>

с последующим:

<Target Name="AfterBuild">
    <UploadTask FilesToPublish="@(OutputFiles)" />
</Target>
...