Как использовать метаданные элемента в качестве аргумента функции элемента в msbuild? - PullRequest
1 голос
/ 31 октября 2019

Предположим, у меня есть следующие элементы

<ItemGroup>
  <Foo Include="a1">
    <Key>a</Key>
  </Foo>
  <Foo Include="a2">
    <Key>a</Key>
  </Foo>
  <Foo Include="b1">
    <Key>b</Key>
  </Foo>
  <Bar Include="bar1">
    <UseKey>a</UseKey>
  </Bar>
  <Bar Include="bar2">
    <UseKey>b</UseKey>
  </Bar>
</ItemGroup>

Теперь я хочу установить новый фрагмент метаданных под названием Foos для Bar элементов. Foos содержит все элементы Foo, которые соответствуют Key. Например, с помощью вышеупомянутых элементов я хочу, чтобы столбцы стали

  <Bar Include="bar1">
    <UseKey>a</UseKey>
    <Foos>a1;a2</Foos>
  </Bar>
  <Bar Include="bar2">
    <UseKey>b</UseKey>
    <Foos>b1</Foos>
  </Bar>

. Я пробовал что-то вроде следующего, но это не работает.

<Target>
  <Bar>
    <Foos>@(Foo->WithMetadataValue('Key', '%(Bar.UseKey)'))</Foos>
  </Bar>
</Target>

Замена %(Bar.UseKey) фактическим ключомзначение типа a или b выполняет фильтрацию Foos, как и ожидалось, но вместо фильтрации по фиксированному значению я хочу фильтровать по метаданным UseKey на столбцах. Это может быть достигнуто с помощью msbuild или мне нужно пользовательское задание для этого?

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