MSBuild文件中的项目在传递给任务时是否保持其顺序?

时间:2009-08-02 21:07:55

标签: msbuild

如果我在MSBuild文件中创建一个项目列表,那么传递给任务时项目的顺序是什么?

E.g。在ItemGroup中指定数据库脚本文件列表。然后我将此ItemGroup提供给自定义任务?订单会得到保证还是订单会改变?

2 个答案:

答案 0 :(得分:2)

是的,MSBuild维护ItemGroup中具有相同项目类型的项目列表的顺序。 (例如,.fsproj中所有“< Compile Include =”...“>”的顺序很重要,因为它指定了F#项目文件中文件的顺序。)

答案 1 :(得分:1)

我相信订单得以维持。但是,根据您创建ItemGroup的方式,可能无法保证订单。

为了更完整,您应该使用Depends组构建脚本以尝试按某种顺序获取它们,即参考数据插入取决于存储的proc脚本,这取决于模式脚本。您可以将每个定义为ItemGroup,因此订单将是正确的。

但是如果你每次都以相同的方式构建它们,你可以安全地假设订单得以维持。