【发布时间】:2009-08-04 01:02:41
【问题描述】:
如果我在 MSBuild 文件中创建项目列表,那么项目在传递给任务时的顺序是什么?
例如在 ItemGroup 中指定了数据库脚本文件的列表。然后我将此 ItemGroup 提供给自定义任务?订单会得到保证还是订单会改变?
【问题讨论】:
标签: msbuild
如果我在 MSBuild 文件中创建项目列表,那么项目在传递给任务时的顺序是什么?
例如在 ItemGroup 中指定了数据库脚本文件的列表。然后我将此 ItemGroup 提供给自定义任务?订单会得到保证还是订单会改变?
【问题讨论】:
标签: msbuild
是的,MSBuild 维护 ItemGroup 中具有相同项目类型的项目列表的顺序。 (例如,.fsproj 中所有“Compile Include="...">”的顺序很重要,因为它指定了 F# 项目文件中的文件顺序。)
【讨论】:
我相信订单是维持的。但是,根据您创建 ItemGroup 的方式,可能无法保证那里的订单。
为了更完整,您可能应该使用 Depends 组构建脚本,以尝试按某种顺序获取它们,即参考数据插入取决于存储的 proc 脚本,该脚本取决于模式脚本。您可以将每个定义为一个 ItemGroup,因此顺序将是正确的。
但是,如果您每次都以相同的方式构建它们,您可能可以放心地假设顺序得以维持。
【讨论】: