我猜它必须是一个ITaskItem,因为它是一个向量而不是标量,我在桌面上只有2个MsBuild书,我找不到如何将数组传递到任务。我想做一个字符串数组,但我想知道适用于任何基本类型的正确方法。
如何将一个字符串(或int)数组传递给MsBuild任务?
答案 0 :(得分:10)
MSBuild任务可以接受ITaskItem
,基元,字符串或任何参数的数组。您只需在任务中声明类型,然后在传递给任务之前转换值。如果该值无法转换为该类型,则会引发异常并停止构建。
例如,如果您有一个接受int[]
命名值的任务,那么您可以这样做。
<Target Name="MyTarget">
<MyTask Values="1;45;657" />
<!-- or you can do -->
<ItemGroup>
<SomeValues Include="7;54;568;432;79" />
</ItemGroup>
<MyTask Values="@(SomeValues) />
</Target>
两种方法基本相同。另一个答案表明所有参数都是字符串或您必须使用ITaskItem
是不正确的。
你说你有两本关于MSBuild的书,然后我认为一本是我的Inside the Microsoft Build Engine书,你应该阅读自定义任务一章,这样你就可以全面掌握这些主题。有一节专门解释参数类型。
答案 1 :(得分:0)
IIRC,msbuild项目总是字符串数组 - 这是唯一的选择。因此,整数数组将存储为数组数字字符串。