Используя MSBuild, как создать динамическую строку из перебора файлов в ItemGroup? - PullRequest
5 голосов
/ 05 мая 2010

Мне нужно создать несколько / testcontainer: параметры для подачи в задачу, которая выполняется MsTest exec.

У меня есть следующее:

  <ItemGroup>
    <TestFiles Include="$(ProjectPath)\**\UnitTest.*.dll" />
  </ItemGroup>

для каждого совпадения в TestFiles Я хотел бы построить строку примерно так:

"/testcontainer:UnitTest.SomeLibrary1.dll"
"/testcontainer:UnitTest.SomeLibrary2.dll"
"/testcontainer:UnitTest.SomeLibrary3.dll"

Я пытаюсь использовать внутренние компоненты MSBuild, не создавая пользовательскую задачу, возможно ли это?

ТИА

Ответы [ 2 ]

6 голосов
/ 05 мая 2010

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

Если вы хотите вызвать его один раз, тогда вы используете синтаксис @ (...), а если вы хотите вызывать его много раз, то выполняете пакетную обработку с синтаксисом% (...).

Чтобы вызвать один раз

<Message Text="Test Files: @(TestFiles->'/testcontainer:%(RecursiveDir)%(Filename)%(Extension)')"/>

Чтобы вызвать много раз

<Message Text="Test Files: /testcontainer:%(TestFiles.RecursiveDir)%(TestFiles.Filename)%(TestFiles.Extension)"/>

Дополнительная информация о дозировании http://sedotech.com/Resources#batching

2 голосов
/ 05 мая 2010

Попробуйте это:?

<Message Text="TestFiles= @(TestFiles-> '&quot;%(Fullpath)&quot;', ' ')" />

Рекомендации:

...