У меня есть MSBuild ItemGroup
и я хотел бы иметь возможность echo
это в «Событии после сборки».
Однако, когда я пытаюсь команды как: echo My ItemGroup: @(Foo)
Я получаю ошибку:
ошибка MSB4164: значение «echo My ItemGroup: @ (Foo)» метаданных «Command» содержит выражение списка элементов. Выражения списка элементов недопустимы для значений метаданных по умолчанию.
Я не очень хорош с ItemGroup
пока нет. Есть ли способ, которым я могу просто echo
список файлов, которые Foo
содержит?
Вы хотите что-то вроде:
<ItemGroup>
<ForcedUsingFilesList Include="c:\path\to\files\*" />
</ItemGroup>
<Target Name="MyTarget">
<PropertyGroup>
<MyFiles>
@(ForcedUsingFilesList->'%(FullPath)')
</MyFiles>
</PropertyGroup>
<Exec>echo $(MyFiles)</Exec>
</Target>
Пытаться %(Foo.Identity)
вместо. Это напечатает только один элемент из списка, но вызовет Задачу, содержащую его ( Exec
Я полагаю), чтобы зациклить предметы.
Если это не сработает, убедитесь, что вы работаете с файлом XML напрямую, а не с IDE, на случай, если он ускользнет или вставит другой код, который мы не видим.
(потом)
Это может быть как эта почта, там, где они жалуются, это не просто и все равно требует прямого редактирования XML. Так что просто измените его на Exec
задача, в которой выражение списка элементов появляется в атрибуте, а не в определении метаданных.
Написано что PostBuildEvent
это скорее вещь обратной совместимости, и лучше всего использовать AfterBuild
target, который «может содержать произвольные задачи MSBuild, включая одну или более Exec
задачи … у него нет собственного пользовательского интерфейса в IDE … отредактируйте его как XML … «Совет 43 в книге Брайана Кретцлера.