MSBuild任务可以接受原始数组,但是如何编写一个传递给任务?

时间:2010-10-13 20:09:15

标签: msbuild

我猜它必须是一个ITaskItem,因为它是一个向量而不是标量,我在桌面上只有2个MsBuild书,我找不到如何将数组传递到任务。我想做一个字符串数组,但我想知道适用于任何基本类型的正确方法。

如何将一个字符串(或int)数组传递给MsBuild任务?

2 个答案:

答案 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项目总是字符串数组 - 这是唯一的选择。因此,整数数组将存储为数组数字字符串。