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

Mas*_*low 3 msbuild

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

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

Say*_*imi 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>
Run Code Online (Sandbox Code Playgroud)

两种方法基本相同.另一个答案表明所有参数都是字符串或您必须使用的ITaskItem是不正确的.

你说你有两本关于MSBuild的书,然后我假设有一本是我的内部Microsoft Build Engine书,你应该阅读自定义任务章节,这样你就可以全面掌握这些主题.有一节专门解释参数类型.

  • 找到了!你需要使用';' 作为你的界限,而不是','. (2认同)