MSBuild: Скопируйте файлы (если они были изменены), а затем выполните действие (только если файлы были обновлены). - PullRequest
5 голосов
/ 14 мая 2009

В MSBuild я могу использовать задачу Copy для копирования файлов из одного места в другое.

Я также могу использовать свойство SkipUnchangedFiles, чтобы указать, что файлы не следует копировать, если они не изменились.

Существует ли стандартный шаблон для прогнозирования последующего действия при условии, что один или несколько файлов были скопированы?

Например:

  1. Скопируйте все обновленные сценарии развертывания
  2. Выполнить пакетный файл, который запускает все сценарии развертывания, в правильном порядке, тогда и только тогда, когда один или несколько сценариев изменились

Еще одно осложнение заключается в том, что я использую задачу CreateItem для динамического создания списка входных файлов:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="CopyAndRun">
  <Target Name="CopyAndRun">
    <CreateItem Include="In\**\*Test*.txt">
      <Output TaskParameter="Include" ItemName="SourceFiles"/>
    </CreateItem>
    <Copy SourceFiles="%(SourceFiles.Identity)" DestinationFolder="Out\%(RecursiveDir)" SkipUnchangedFiles="true" />
    <!-- Only want to execute this if updated files were copied -->
    <Message Text="Running..." />
  </Target>
</Project>

1 Ответ

9 голосов
/ 14 мая 2009

Этого можно добиться с помощью инкрементного здания , которое поставляется из коробки с MSBuild.

Сайед Ибрагим Хашими

Моя книга: Внутри Microsoft Build Engine: Использование MSBuild и Team Foundation Build

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...