我想创建一个以这样的方式调用的自定义任务:
<Target Name="Remap">
<ItemGroup>
<Entry Key="key1" Value="value1" />
<Entry Key="key2" Value="value2" />
</ItemGroup>
<CustomTask
Entries="@(Entry)"
/>
</Target>
或者这个:
<Target Name="Remap">
<ItemGroup>
<Entry>
<Key>key1</Key>
<Value>value1</Value>
</Entry>
<Entry>
<Key>key2</Key>
<Value>value2</Value>
</Entry>
</ItemGroup>
<CustomTask
Entries="@(Entry)"
/>
</Target>
我尝试过使用:
public class CustomTask : Task
{
public override bool Execute()
{
...
}
[Required]
public ITaskItem[] Entries { get; set; }
}
但在第一种情况下,我收到错误:
error MSB4066: The attribute "Key" in element <Entry> is unrecognized.
在第二种情况下,虽然没有错误,但Entries集合只是空的。
有没有办法通过MsBuild自定义任务完成此任务?
答案 0 :(得分:1)
项目组中的项目必须具有标识它的Include=
属性,因此请尝试以下操作:
<Target Name="Remap">
<ItemGroup>
<Entry Include="key1">
<Value>value1</Value>
</Entry>
<Entry Include="key2">
<Value>value2</Value>
</Entry>
</ItemGroup>
<CustomTask
Entries="@(Entry)"
/>
</Target>
Value
部分应在项目中显示为元数据。