Я не знаю о задачах, но уже есть свойства, которые содержат все элементы. Просто посмотрите в свой типичный файл проекта, и вы увидите, к какой коллекции они добавляются.
Обратите внимание на свойства Содержимое , Компиляция , Папка ... каждый раз, когда вы добавляете файл в проект, он помещается в один из такие коллекции:
<ItemGroup>
<Content Include="Default.aspx" />
<Content Include="Web.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="Default.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
<DependentUpon>Default.aspx</DependentUpon>
</Compile>
<Compile Include="Default.aspx.designer.cs">
<DependentUpon>Default.aspx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
</ItemGroup>
Затем вы можете сделать что-то подобное, чтобы поместить значения из существующих свойств в ваши свойства (атрибут Condition действует как фильтр):
<CreateItem Include="@(Content)" Condition="'%(Extension)' == '.aspx'">
<Output TaskParameter="Include" ItemName="ViewsContent" />
</CreateItem>
Или вы можете сделать это вручную (атрибут Include использует существующее свойство OutputPath, но указывает путь, который включает все файлы):
<CreateItem Include="$(OutputPath)\**\*">
<Output TaskParameter="Include" ItemName="OutputFiles" />
</CreateItem>
Есть больше подробностей в документации MSDN MSBuild, которую я прочитал, когда занимался пользовательскими задачами сборки и другими полезными вещами. Перейдите к задаче CreateItem, и вы сможете больше понять из того, что я написал здесь. Это действительно легко подобрать.