echo Все элементы ItemGroup

У меня есть MSBuild ItemGroup и я хотел бы иметь возможность echo это в «Событии после сборки».

Однако, когда я пытаюсь команды как: echo My ItemGroup: @(Foo)

Я получаю ошибку:

ошибка MSB4164: значение «echo My ItemGroup: @ (Foo)» метаданных «Command» содержит выражение списка элементов. Выражения списка элементов недопустимы для значений метаданных по умолчанию.

Я не очень хорош с ItemGroupпока нет. Есть ли способ, которым я могу просто echo список файлов, которые Foo содержит?

1

Решение

Вы хотите что-то вроде:

<ItemGroup>
<ForcedUsingFilesList Include="c:\path\to\files\*" />
</ItemGroup>
<Target Name="MyTarget">
<PropertyGroup>
<MyFiles>
@(ForcedUsingFilesList->'%(FullPath)')
</MyFiles>
</PropertyGroup>
<Exec>echo $(MyFiles)</Exec>
</Target>
1

Другие решения

Пытаться %(Foo.Identity) вместо. Это напечатает только один элемент из списка, но вызовет Задачу, содержащую его ( Exec Я полагаю), чтобы зациклить предметы.

Если это не сработает, убедитесь, что вы работаете с файлом XML напрямую, а не с IDE, на случай, если он ускользнет или вставит другой код, который мы не видим.

(потом)
Это может быть как эта почта, там, где они жалуются, это не просто и все равно требует прямого редактирования XML. Так что просто измените его на Exec задача, в которой выражение списка элементов появляется в атрибуте, а не в определении метаданных.

Написано что PostBuildEvent это скорее вещь обратной совместимости, и лучше всего использовать AfterBuild target, который «может содержать произвольные задачи MSBuild, включая одну или более Exec задачи … у него нет собственного пользовательского интерфейса в IDE … отредактируйте его как XML … «Совет 43 в книге Брайана Кретцлера.

2

По вопросам рекламы [email protected]