Пакетное обновление MSBuild MetaData ItemGroup с выводом из пользовательской задачи

Я пытаюсь использовать MSBuild 4.0, чтобы удалить \ установить набор служб Windows, которые я определил в ItemGroup, используя расширения MSBuild. Проблема, с которой я сталкиваюсь, заключается в том, что если служба не существует, то при удалении TaskAction произойдет ошибка. Я хочу иметь возможность использовать TaskAction CheckExists, чтобы установить в моих метаданных флаг, который я могу оценить в условии условия.

Однако я не могу понять, как выполнить пакетную обработку списка служб, вызывая задачу CheckExist и обновляя флаг в моих метаданных. Смотрите образец ниже:

<ItemGroup>
    <ServiceName Include="Service1">
      <ExeName>Service1.exe</ExeName>
      <ServicePath>$(LocalBin)\Service1.exe</ServicePath>
      <User>LocalSystem</User>
      <Exists></Exists>
    </ServiceName>
    <ServiceName Include="Service2">
      <ExeName>Service2.exe</ExeName>
      <ServicePath>$(LocalBin)\Service2.exe</ServicePath>
      <User>LocalSystem</User>
      <Exists></Exists>
    </ServiceName>
  </ItemGroup>

  <Target Name="UninstallServices">

    <!--how can I batch over this command to set %(ServiceName.Exist)-->
    <MSBuild.ExtensionPack.Computer.WindowsService TaskAction="CheckExists" ServiceName="%(ServiceName.Identity)">
      <Output TaskParameter="Exists" PropertyName="DoesExist"/>
    </MSBuild.ExtensionPack.Computer.WindowsService>

    <MSBuild.ExtensionPack.Computer.WindowsService TaskAction="Uninstall" ServiceName="%(ServiceName.Identity)" User="%(ServiceName.User)" ServicePath="%(ServiceName.ServicePath)" Condition="%(ServiceName.Exists) = 'True'" />
  </Target>

Я провел некоторый поиск и не нашел пример, где метаданные обновляются на основе результата вывода задачи. Это то, что возможно? Должен ли я придерживаться другого подхода?

Мое текущее решение этой проблемы состояло в том, чтобы установить ContinueOnError равным true при вызове удаления, но мне не нравится этот подход, потому что я мог скрывать другие ошибки.

Любая помощь будет оценена.

Спасибо,

Тайсон Монкриф

0 ответов

Другие вопросы по тегам