Удаление отдельных элементов из списка с помощью MSBuild - PullRequest
0 голосов
/ 29 марта 2011

Я пытаюсь использовать элемент в списке несколько раз. Список создается из имен каталогов с использованием расширений MSBuild:

    <MSBuild.ExtensionPack.FileSystem.FindUnder TaskAction="FindDirectories" Recursive="false" Path="path\to\stuff\">
        <Output ItemName="AllFoundDirectories" TaskParameter="FoundItems"/>
    </MSBuild.ExtensionPack.FileSystem.FindUnder>

Я хочу использовать каждый элемент в этом списке в разных случаях, т. Е .:

<Message Text="##teamcity[testStarted name='%(AllFoundDirectories.FileName)']"/>
<!-- do some stuff using %(AllFoundDirectories.FileName) here -->
<Message Text="##teamcity[testFinished name='%(AllFoundDirectories.FileName)' duration='test_duration_in_milliseconds']"/>

У меня проблема в том, что все в списке вызывается в первый раз, когда MSBuild видит переменную % (AllFoundDirectories.FileName) . Есть ли способ вывести одну переменную из списка за раз и использовать ее в разных местах?

1 Ответ

2 голосов
/ 29 марта 2011

Использовать группировку цели для зависимой цели.

<Target Name="MakeDirectoryItems">
   <MSBuild.ExtensionPack.FileSystem.FindUnder
      TaskAction="FindDirectories"
      Recursive="false" Path="path\to\stuff\">
      <Output
         ItemName="AllFoundDirectories"
         TaskParameter="FoundItems"
         />
   </MSBuild.ExtensionPack.FileSystem.FindUnder>  
</Target>

<Target Name="UseDirectoryItemsInBatch"
   Outputs="%(AllFoundDirectories.Identity)">
   <!--
      while inside this target, the value of both @(AllFoundDirectories)
      and %(AllFoundDirectories.Meta) will be just the single item
      in each batch.
   -->
</Target>

<Target Name="Driver"
   DependsOnTargets="MakeDirectoryItems;UseDirectoryItemsInBatch">
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...